// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by google-apis-code-generator 1.5.1
//     C# generator version: 1.22.0
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

/**
 * \brief
 *   Content API for Shopping Version v2
 *
 * \section ApiInfo API Version Information
 *    <table>
 *      <tr><th>API
 *          <td><a href='https://developers.google.com/shopping-content'>Content API for Shopping</a>
 *      <tr><th>API Version<td>v2
 *      <tr><th>API Rev<td>20170303 (792)
 *      <tr><th>API Docs
 *          <td><a href='https://developers.google.com/shopping-content'>
 *              https://developers.google.com/shopping-content</a>
 *      <tr><th>Discovery Name<td>content
 *    </table>
 *
 * \section ForMoreInfo For More Information
 *
 * The complete API documentation for using Content API for Shopping can be found at
 * <a href='https://developers.google.com/shopping-content'>https://developers.google.com/shopping-content</a>.
 *
 * For more information about the Google APIs Client Library for .NET, see
 * <a href='https://developers.google.com/api-client-library/dotnet/get_started'>
 * https://developers.google.com/api-client-library/dotnet/get_started</a>
 */

namespace Google.Apis.ShoppingContent.v2
{
    /// <summary>The ShoppingContent Service.</summary>
    public class ShoppingContentService : Google.Apis.Services.BaseClientService
    {
        /// <summary>The API version.</summary>
        public const string Version = "v2";

        /// <summary>The discovery version used to generate this service.</summary>
        public static Google.Apis.Discovery.DiscoveryVersion DiscoveryVersionUsed =
            Google.Apis.Discovery.DiscoveryVersion.Version_1_0;

        /// <summary>Constructs a new service.</summary>
        public ShoppingContentService() :
            this(new Google.Apis.Services.BaseClientService.Initializer()) {}

        /// <summary>Constructs a new service.</summary>
        /// <param name="initializer">The service initializer.</param>
        public ShoppingContentService(Google.Apis.Services.BaseClientService.Initializer initializer)
            : base(initializer)
        {
            accounts = new AccountsResource(this);
            accountshipping = new AccountshippingResource(this);
            accountstatuses = new AccountstatusesResource(this);
            accounttax = new AccounttaxResource(this);
            datafeeds = new DatafeedsResource(this);
            datafeedstatuses = new DatafeedstatusesResource(this);
            inventory = new InventoryResource(this);
            orders = new OrdersResource(this);
            products = new ProductsResource(this);
            productstatuses = new ProductstatusesResource(this);
            shippingsettings = new ShippingsettingsResource(this);
        }

        /// <summary>Gets the service supported features.</summary>
        public override System.Collections.Generic.IList<string> Features
        {
            get { return new string[0]; }
        }

        /// <summary>Gets the service name.</summary>
        public override string Name
        {
            get { return "content"; }
        }

        /// <summary>Gets the service base URI.</summary>
        public override string BaseUri
        {
            get { return "https://www.googleapis.com/content/v2/"; }
        }

        /// <summary>Gets the service base path.</summary>
        public override string BasePath
        {
            get { return "content/v2/"; }
        }

        /// <summary>Available OAuth 2.0 scopes for use with the Content API for Shopping.</summary>
        public class Scope
        {
            /// <summary>Manage your product listings and accounts for Google Shopping</summary>
            public static string Content = "https://www.googleapis.com/auth/content";

        }



        private readonly AccountsResource accounts;

        /// <summary>Gets the Accounts resource.</summary>
        public virtual AccountsResource Accounts
        {
            get { return accounts; }
        }

        private readonly AccountshippingResource accountshipping;

        /// <summary>Gets the Accountshipping resource.</summary>
        public virtual AccountshippingResource Accountshipping
        {
            get { return accountshipping; }
        }

        private readonly AccountstatusesResource accountstatuses;

        /// <summary>Gets the Accountstatuses resource.</summary>
        public virtual AccountstatusesResource Accountstatuses
        {
            get { return accountstatuses; }
        }

        private readonly AccounttaxResource accounttax;

        /// <summary>Gets the Accounttax resource.</summary>
        public virtual AccounttaxResource Accounttax
        {
            get { return accounttax; }
        }

        private readonly DatafeedsResource datafeeds;

        /// <summary>Gets the Datafeeds resource.</summary>
        public virtual DatafeedsResource Datafeeds
        {
            get { return datafeeds; }
        }

        private readonly DatafeedstatusesResource datafeedstatuses;

        /// <summary>Gets the Datafeedstatuses resource.</summary>
        public virtual DatafeedstatusesResource Datafeedstatuses
        {
            get { return datafeedstatuses; }
        }

        private readonly InventoryResource inventory;

        /// <summary>Gets the Inventory resource.</summary>
        public virtual InventoryResource Inventory
        {
            get { return inventory; }
        }

        private readonly OrdersResource orders;

        /// <summary>Gets the Orders resource.</summary>
        public virtual OrdersResource Orders
        {
            get { return orders; }
        }

        private readonly ProductsResource products;

        /// <summary>Gets the Products resource.</summary>
        public virtual ProductsResource Products
        {
            get { return products; }
        }

        private readonly ProductstatusesResource productstatuses;

        /// <summary>Gets the Productstatuses resource.</summary>
        public virtual ProductstatusesResource Productstatuses
        {
            get { return productstatuses; }
        }

        private readonly ShippingsettingsResource shippingsettings;

        /// <summary>Gets the Shippingsettings resource.</summary>
        public virtual ShippingsettingsResource Shippingsettings
        {
            get { return shippingsettings; }
        }
    }

    ///<summary>A base abstract class for ShoppingContent requests.</summary>
    public abstract class ShoppingContentBaseServiceRequest<TResponse> : Google.Apis.Requests.ClientServiceRequest<TResponse>
    {
        ///<summary>Constructs a new ShoppingContentBaseServiceRequest instance.</summary>
        protected ShoppingContentBaseServiceRequest(Google.Apis.Services.IClientService service)
            : base(service)
        {
        }

        /// <summary>Data format for the response.</summary>
        /// [default: json]
        [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<AltEnum> Alt { get; set; }

        /// <summary>Data format for the response.</summary>
        public enum AltEnum
        {
            /// <summary>Responses with Content-Type of application/json</summary>
            [Google.Apis.Util.StringValueAttribute("json")]
            Json,
        }

        /// <summary>Selector specifying which fields to include in a partial response.</summary>
        [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Fields { get; set; }

        /// <summary>API key. Your API key identifies your project and provides you with API access, quota, and reports.
        /// Required unless you provide an OAuth 2.0 token.</summary>
        [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Key { get; set; }

        /// <summary>OAuth 2.0 token for the current user.</summary>
        [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string OauthToken { get; set; }

        /// <summary>Returns response with indentations and line breaks.</summary>
        /// [default: true]
        [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<bool> PrettyPrint { get; set; }

        /// <summary>Available to use for quota purposes for server-side applications. Can be any arbitrary string
        /// assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.</summary>
        [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string QuotaUser { get; set; }

        /// <summary>IP address of the site where the request originates. Use this if you want to enforce per-user
        /// limits.</summary>
        [Google.Apis.Util.RequestParameterAttribute("userIp", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UserIp { get; set; }

        /// <summary>Initializes ShoppingContent parameter list.</summary>
        protected override void InitParameters()
        {
            base.InitParameters();

            RequestParameters.Add(
                "alt", new Google.Apis.Discovery.Parameter
                {
                    Name = "alt",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "json",
                    Pattern = null,
                });
            RequestParameters.Add(
                "fields", new Google.Apis.Discovery.Parameter
                {
                    Name = "fields",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "key", new Google.Apis.Discovery.Parameter
                {
                    Name = "key",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "oauth_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "oauth_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "prettyPrint", new Google.Apis.Discovery.Parameter
                {
                    Name = "prettyPrint",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "true",
                    Pattern = null,
                });
            RequestParameters.Add(
                "quotaUser", new Google.Apis.Discovery.Parameter
                {
                    Name = "quotaUser",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "userIp", new Google.Apis.Discovery.Parameter
                {
                    Name = "userIp",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
        }
    }

    /// <summary>The "accounts" collection of methods.</summary>
    public class AccountsResource
    {
        private const string Resource = "accounts";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public AccountsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Returns information about the authenticated user.</summary>
        public virtual AuthinfoRequest Authinfo()
        {
            return new AuthinfoRequest(service);
        }

        /// <summary>Returns information about the authenticated user.</summary>
        public class AuthinfoRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountsAuthInfoResponse>
        {
            /// <summary>Constructs a new Authinfo request.</summary>
            public AuthinfoRequest(Google.Apis.Services.IClientService service)
                : base(service)
            {
                InitParameters();
            }



            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "authinfo"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "accounts/authinfo"; }
            }

            /// <summary>Initializes Authinfo parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Retrieves, inserts, updates, and deletes multiple Merchant Center (sub-)accounts in a single
        /// request.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual CustombatchRequest Custombatch(Google.Apis.ShoppingContent.v2.Data.AccountsCustomBatchRequest body)
        {
            return new CustombatchRequest(service, body);
        }

        /// <summary>Retrieves, inserts, updates, and deletes multiple Merchant Center (sub-)accounts in a single
        /// request.</summary>
        public class CustombatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountsCustomBatchResponse>
        {
            /// <summary>Constructs a new Custombatch request.</summary>
            public CustombatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.AccountsCustomBatchRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }


            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.AccountsCustomBatchRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "custombatch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "accounts/batch"; }
            }

            /// <summary>Initializes Custombatch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Deletes a Merchant Center sub-account. This method can only be called for multi-client
        /// accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account.</param>
        public virtual DeleteRequest Delete(ulong merchantId, ulong accountId)
        {
            return new DeleteRequest(service, merchantId, accountId);
        }

        /// <summary>Deletes a Merchant Center sub-account. This method can only be called for multi-client
        /// accounts.</summary>
        public class DeleteRequest : ShoppingContentBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Delete request.</summary>
            public DeleteRequest(Google.Apis.Services.IClientService service, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "delete"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "DELETE"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accounts/{accountId}"; }
            }

            /// <summary>Initializes Delete parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Retrieves a Merchant Center account. This method can only be called for accounts to which the
        /// managing account has access: either the managing account itself or sub-accounts if the managing account is a
        /// multi-client account.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account.</param>
        public virtual GetRequest Get(ulong merchantId, ulong accountId)
        {
            return new GetRequest(service, merchantId, accountId);
        }

        /// <summary>Retrieves a Merchant Center account. This method can only be called for accounts to which the
        /// managing account has access: either the managing account itself or sub-accounts if the managing account is a
        /// multi-client account.</summary>
        public class GetRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.Account>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accounts/{accountId}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Creates a Merchant Center sub-account. This method can only be called for multi-client
        /// accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        public virtual InsertRequest Insert(Google.Apis.ShoppingContent.v2.Data.Account body, ulong merchantId)
        {
            return new InsertRequest(service, body, merchantId);
        }

        /// <summary>Creates a Merchant Center sub-account. This method can only be called for multi-client
        /// accounts.</summary>
        public class InsertRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.Account>
        {
            /// <summary>Constructs a new Insert request.</summary>
            public InsertRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.Account body, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.Account Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "insert"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accounts"; }
            }

            /// <summary>Initializes Insert parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Lists the sub-accounts in your Merchant Center account. This method can only be called for multi-
        /// client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        public virtual ListRequest List(ulong merchantId)
        {
            return new ListRequest(service, merchantId);
        }

        /// <summary>Lists the sub-accounts in your Merchant Center account. This method can only be called for multi-
        /// client accounts.</summary>
        public class ListRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountsListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The maximum number of accounts to return in the response, used for paging.</summary>
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> MaxResults { get; set; }

            /// <summary>The token returned by the previous request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accounts"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates a Merchant Center account. This method can only be called for accounts to which the
        /// managing account has access: either the managing account itself or sub-accounts if the managing account is a
        /// multi-client account. This method supports patch semantics.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account.</param>
        public virtual PatchRequest Patch(Google.Apis.ShoppingContent.v2.Data.Account body, ulong merchantId, ulong accountId)
        {
            return new PatchRequest(service, body, merchantId, accountId);
        }

        /// <summary>Updates a Merchant Center account. This method can only be called for accounts to which the
        /// managing account has access: either the managing account itself or sub-accounts if the managing account is a
        /// multi-client account. This method supports patch semantics.</summary>
        public class PatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.Account>
        {
            /// <summary>Constructs a new Patch request.</summary>
            public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.Account body, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.Account Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "patch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "PATCH"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accounts/{accountId}"; }
            }

            /// <summary>Initializes Patch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates a Merchant Center account. This method can only be called for accounts to which the
        /// managing account has access: either the managing account itself or sub-accounts if the managing account is a
        /// multi-client account.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account.</param>
        public virtual UpdateRequest Update(Google.Apis.ShoppingContent.v2.Data.Account body, ulong merchantId, ulong accountId)
        {
            return new UpdateRequest(service, body, merchantId, accountId);
        }

        /// <summary>Updates a Merchant Center account. This method can only be called for accounts to which the
        /// managing account has access: either the managing account itself or sub-accounts if the managing account is a
        /// multi-client account.</summary>
        public class UpdateRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.Account>
        {
            /// <summary>Constructs a new Update request.</summary>
            public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.Account body, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.Account Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "update"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "PUT"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accounts/{accountId}"; }
            }

            /// <summary>Initializes Update parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "accountshipping" collection of methods.</summary>
    public class AccountshippingResource
    {
        private const string Resource = "accountshipping";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public AccountshippingResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Retrieves and updates the shipping settings of multiple accounts in a single request.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual CustombatchRequest Custombatch(Google.Apis.ShoppingContent.v2.Data.AccountshippingCustomBatchRequest body)
        {
            return new CustombatchRequest(service, body);
        }

        /// <summary>Retrieves and updates the shipping settings of multiple accounts in a single request.</summary>
        public class CustombatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountshippingCustomBatchResponse>
        {
            /// <summary>Constructs a new Custombatch request.</summary>
            public CustombatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.AccountshippingCustomBatchRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }


            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.AccountshippingCustomBatchRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "custombatch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "accountshipping/batch"; }
            }

            /// <summary>Initializes Custombatch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Retrieves the shipping settings of the account. This method can only be called for accounts to
        /// which the managing account has access: either the managing account itself or sub-accounts if the managing
        /// account is a multi-client account.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account for which to get/update account shipping settings.</param>
        public virtual GetRequest Get(ulong merchantId, ulong accountId)
        {
            return new GetRequest(service, merchantId, accountId);
        }

        /// <summary>Retrieves the shipping settings of the account. This method can only be called for accounts to
        /// which the managing account has access: either the managing account itself or sub-accounts if the managing
        /// account is a multi-client account.</summary>
        public class GetRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountShipping>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account for which to get/update account shipping settings.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accountshipping/{accountId}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Lists the shipping settings of the sub-accounts in your Merchant Center account. This method can
        /// only be called for multi-client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        public virtual ListRequest List(ulong merchantId)
        {
            return new ListRequest(service, merchantId);
        }

        /// <summary>Lists the shipping settings of the sub-accounts in your Merchant Center account. This method can
        /// only be called for multi-client accounts.</summary>
        public class ListRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountshippingListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The maximum number of shipping settings to return in the response, used for paging.</summary>
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> MaxResults { get; set; }

            /// <summary>The token returned by the previous request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accountshipping"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates the shipping settings of the account. This method can only be called for accounts to which
        /// the managing account has access: either the managing account itself or sub-accounts if the managing account
        /// is a multi-client account. This method supports patch semantics.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account for which to get/update account shipping settings.</param>
        public virtual PatchRequest Patch(Google.Apis.ShoppingContent.v2.Data.AccountShipping body, ulong merchantId, ulong accountId)
        {
            return new PatchRequest(service, body, merchantId, accountId);
        }

        /// <summary>Updates the shipping settings of the account. This method can only be called for accounts to which
        /// the managing account has access: either the managing account itself or sub-accounts if the managing account
        /// is a multi-client account. This method supports patch semantics.</summary>
        public class PatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountShipping>
        {
            /// <summary>Constructs a new Patch request.</summary>
            public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.AccountShipping body, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account for which to get/update account shipping settings.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.AccountShipping Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "patch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "PATCH"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accountshipping/{accountId}"; }
            }

            /// <summary>Initializes Patch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates the shipping settings of the account. This method can only be called for accounts to which
        /// the managing account has access: either the managing account itself or sub-accounts if the managing account
        /// is a multi-client account.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account for which to get/update account shipping settings.</param>
        public virtual UpdateRequest Update(Google.Apis.ShoppingContent.v2.Data.AccountShipping body, ulong merchantId, ulong accountId)
        {
            return new UpdateRequest(service, body, merchantId, accountId);
        }

        /// <summary>Updates the shipping settings of the account. This method can only be called for accounts to which
        /// the managing account has access: either the managing account itself or sub-accounts if the managing account
        /// is a multi-client account.</summary>
        public class UpdateRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountShipping>
        {
            /// <summary>Constructs a new Update request.</summary>
            public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.AccountShipping body, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account for which to get/update account shipping settings.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.AccountShipping Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "update"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "PUT"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accountshipping/{accountId}"; }
            }

            /// <summary>Initializes Update parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "accountstatuses" collection of methods.</summary>
    public class AccountstatusesResource
    {
        private const string Resource = "accountstatuses";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public AccountstatusesResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }



        /// <param name="body">The body of the request.</param>
        public virtual CustombatchRequest Custombatch(Google.Apis.ShoppingContent.v2.Data.AccountstatusesCustomBatchRequest body)
        {
            return new CustombatchRequest(service, body);
        }


        public class CustombatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountstatusesCustomBatchResponse>
        {
            /// <summary>Constructs a new Custombatch request.</summary>
            public CustombatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.AccountstatusesCustomBatchRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.AccountstatusesCustomBatchRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "custombatch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "accountstatuses/batch"; }
            }

            /// <summary>Initializes Custombatch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Retrieves the status of a Merchant Center account. This method can only be called for accounts to
        /// which the managing account has access: either the managing account itself or sub-accounts if the managing
        /// account is a multi-client account.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account.</param>
        public virtual GetRequest Get(ulong merchantId, ulong accountId)
        {
            return new GetRequest(service, merchantId, accountId);
        }

        /// <summary>Retrieves the status of a Merchant Center account. This method can only be called for accounts to
        /// which the managing account has access: either the managing account itself or sub-accounts if the managing
        /// account is a multi-client account.</summary>
        public class GetRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountStatus>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accountstatuses/{accountId}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Lists the statuses of the sub-accounts in your Merchant Center account. This method can only be
        /// called for multi-client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        public virtual ListRequest List(ulong merchantId)
        {
            return new ListRequest(service, merchantId);
        }

        /// <summary>Lists the statuses of the sub-accounts in your Merchant Center account. This method can only be
        /// called for multi-client accounts.</summary>
        public class ListRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountstatusesListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The maximum number of account statuses to return in the response, used for paging.</summary>
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> MaxResults { get; set; }

            /// <summary>The token returned by the previous request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accountstatuses"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "accounttax" collection of methods.</summary>
    public class AccounttaxResource
    {
        private const string Resource = "accounttax";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public AccounttaxResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Retrieves and updates tax settings of multiple accounts in a single request.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual CustombatchRequest Custombatch(Google.Apis.ShoppingContent.v2.Data.AccounttaxCustomBatchRequest body)
        {
            return new CustombatchRequest(service, body);
        }

        /// <summary>Retrieves and updates tax settings of multiple accounts in a single request.</summary>
        public class CustombatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccounttaxCustomBatchResponse>
        {
            /// <summary>Constructs a new Custombatch request.</summary>
            public CustombatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.AccounttaxCustomBatchRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }


            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.AccounttaxCustomBatchRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "custombatch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "accounttax/batch"; }
            }

            /// <summary>Initializes Custombatch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Retrieves the tax settings of the account. This method can only be called for accounts to which the
        /// managing account has access: either the managing account itself or sub-accounts if the managing account is a
        /// multi-client account.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account for which to get/update account tax settings.</param>
        public virtual GetRequest Get(ulong merchantId, ulong accountId)
        {
            return new GetRequest(service, merchantId, accountId);
        }

        /// <summary>Retrieves the tax settings of the account. This method can only be called for accounts to which the
        /// managing account has access: either the managing account itself or sub-accounts if the managing account is a
        /// multi-client account.</summary>
        public class GetRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountTax>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account for which to get/update account tax settings.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accounttax/{accountId}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Lists the tax settings of the sub-accounts in your Merchant Center account. This method can only be
        /// called for multi-client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        public virtual ListRequest List(ulong merchantId)
        {
            return new ListRequest(service, merchantId);
        }

        /// <summary>Lists the tax settings of the sub-accounts in your Merchant Center account. This method can only be
        /// called for multi-client accounts.</summary>
        public class ListRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccounttaxListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The maximum number of tax settings to return in the response, used for paging.</summary>
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> MaxResults { get; set; }

            /// <summary>The token returned by the previous request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accounttax"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates the tax settings of the account. This method can only be called for accounts to which the
        /// managing account has access: either the managing account itself or sub-accounts if the managing account is a
        /// multi-client account. This method supports patch semantics.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account for which to get/update account tax settings.</param>
        public virtual PatchRequest Patch(Google.Apis.ShoppingContent.v2.Data.AccountTax body, ulong merchantId, ulong accountId)
        {
            return new PatchRequest(service, body, merchantId, accountId);
        }

        /// <summary>Updates the tax settings of the account. This method can only be called for accounts to which the
        /// managing account has access: either the managing account itself or sub-accounts if the managing account is a
        /// multi-client account. This method supports patch semantics.</summary>
        public class PatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountTax>
        {
            /// <summary>Constructs a new Patch request.</summary>
            public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.AccountTax body, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account for which to get/update account tax settings.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.AccountTax Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "patch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "PATCH"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accounttax/{accountId}"; }
            }

            /// <summary>Initializes Patch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates the tax settings of the account. This method can only be called for accounts to which the
        /// managing account has access: either the managing account itself or sub-accounts if the managing account is a
        /// multi-client account.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account for which to get/update account tax settings.</param>
        public virtual UpdateRequest Update(Google.Apis.ShoppingContent.v2.Data.AccountTax body, ulong merchantId, ulong accountId)
        {
            return new UpdateRequest(service, body, merchantId, accountId);
        }

        /// <summary>Updates the tax settings of the account. This method can only be called for accounts to which the
        /// managing account has access: either the managing account itself or sub-accounts if the managing account is a
        /// multi-client account.</summary>
        public class UpdateRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.AccountTax>
        {
            /// <summary>Constructs a new Update request.</summary>
            public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.AccountTax body, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account for which to get/update account tax settings.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.AccountTax Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "update"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "PUT"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/accounttax/{accountId}"; }
            }

            /// <summary>Initializes Update parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "datafeeds" collection of methods.</summary>
    public class DatafeedsResource
    {
        private const string Resource = "datafeeds";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public DatafeedsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }



        /// <param name="body">The body of the request.</param>
        public virtual CustombatchRequest Custombatch(Google.Apis.ShoppingContent.v2.Data.DatafeedsCustomBatchRequest body)
        {
            return new CustombatchRequest(service, body);
        }


        public class CustombatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.DatafeedsCustomBatchResponse>
        {
            /// <summary>Constructs a new Custombatch request.</summary>
            public CustombatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.DatafeedsCustomBatchRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }


            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.DatafeedsCustomBatchRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "custombatch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "datafeeds/batch"; }
            }

            /// <summary>Initializes Custombatch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Deletes a datafeed from your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        /// <param name="merchantId"></param>
        /// <param name="datafeedId"></param>
        public virtual DeleteRequest Delete(ulong merchantId, ulong datafeedId)
        {
            return new DeleteRequest(service, merchantId, datafeedId);
        }

        /// <summary>Deletes a datafeed from your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        public class DeleteRequest : ShoppingContentBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Delete request.</summary>
            public DeleteRequest(Google.Apis.Services.IClientService service, ulong merchantId, ulong datafeedId)
                : base(service)
            {
                MerchantId = merchantId;
                DatafeedId = datafeedId;
                InitParameters();
            }



            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }


            [Google.Apis.Util.RequestParameterAttribute("datafeedId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong DatafeedId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "delete"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "DELETE"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/datafeeds/{datafeedId}"; }
            }

            /// <summary>Initializes Delete parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "datafeedId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "datafeedId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Retrieves a datafeed from your Merchant Center account. This method can only be called for non-
        /// multi-client accounts.</summary>
        /// <param name="merchantId"></param>
        /// <param name="datafeedId"></param>
        public virtual GetRequest Get(ulong merchantId, ulong datafeedId)
        {
            return new GetRequest(service, merchantId, datafeedId);
        }

        /// <summary>Retrieves a datafeed from your Merchant Center account. This method can only be called for non-
        /// multi-client accounts.</summary>
        public class GetRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.Datafeed>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, ulong merchantId, ulong datafeedId)
                : base(service)
            {
                MerchantId = merchantId;
                DatafeedId = datafeedId;
                InitParameters();
            }



            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }


            [Google.Apis.Util.RequestParameterAttribute("datafeedId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong DatafeedId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/datafeeds/{datafeedId}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "datafeedId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "datafeedId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Registers a datafeed with your Merchant Center account. This method can only be called for non-
        /// multi-client accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId"></param>
        public virtual InsertRequest Insert(Google.Apis.ShoppingContent.v2.Data.Datafeed body, ulong merchantId)
        {
            return new InsertRequest(service, body, merchantId);
        }

        /// <summary>Registers a datafeed with your Merchant Center account. This method can only be called for non-
        /// multi-client accounts.</summary>
        public class InsertRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.Datafeed>
        {
            /// <summary>Constructs a new Insert request.</summary>
            public InsertRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.Datafeed body, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                Body = body;
                InitParameters();
            }



            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.Datafeed Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "insert"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/datafeeds"; }
            }

            /// <summary>Initializes Insert parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Lists the datafeeds in your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        public virtual ListRequest List(ulong merchantId)
        {
            return new ListRequest(service, merchantId);
        }

        /// <summary>Lists the datafeeds in your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        public class ListRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.DatafeedsListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The maximum number of products to return in the response, used for paging.</summary>
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> MaxResults { get; set; }

            /// <summary>The token returned by the previous request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/datafeeds"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates a datafeed of your Merchant Center account. This method can only be called for non-multi-
        /// client accounts. This method supports patch semantics.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId"></param>
        /// <param name="datafeedId"></param>
        public virtual PatchRequest Patch(Google.Apis.ShoppingContent.v2.Data.Datafeed body, ulong merchantId, ulong datafeedId)
        {
            return new PatchRequest(service, body, merchantId, datafeedId);
        }

        /// <summary>Updates a datafeed of your Merchant Center account. This method can only be called for non-multi-
        /// client accounts. This method supports patch semantics.</summary>
        public class PatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.Datafeed>
        {
            /// <summary>Constructs a new Patch request.</summary>
            public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.Datafeed body, ulong merchantId, ulong datafeedId)
                : base(service)
            {
                MerchantId = merchantId;
                DatafeedId = datafeedId;
                Body = body;
                InitParameters();
            }



            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }


            [Google.Apis.Util.RequestParameterAttribute("datafeedId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong DatafeedId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.Datafeed Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "patch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "PATCH"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/datafeeds/{datafeedId}"; }
            }

            /// <summary>Initializes Patch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "datafeedId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "datafeedId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates a datafeed of your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId"></param>
        /// <param name="datafeedId"></param>
        public virtual UpdateRequest Update(Google.Apis.ShoppingContent.v2.Data.Datafeed body, ulong merchantId, ulong datafeedId)
        {
            return new UpdateRequest(service, body, merchantId, datafeedId);
        }

        /// <summary>Updates a datafeed of your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        public class UpdateRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.Datafeed>
        {
            /// <summary>Constructs a new Update request.</summary>
            public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.Datafeed body, ulong merchantId, ulong datafeedId)
                : base(service)
            {
                MerchantId = merchantId;
                DatafeedId = datafeedId;
                Body = body;
                InitParameters();
            }



            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }


            [Google.Apis.Util.RequestParameterAttribute("datafeedId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong DatafeedId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.Datafeed Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "update"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "PUT"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/datafeeds/{datafeedId}"; }
            }

            /// <summary>Initializes Update parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "datafeedId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "datafeedId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "datafeedstatuses" collection of methods.</summary>
    public class DatafeedstatusesResource
    {
        private const string Resource = "datafeedstatuses";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public DatafeedstatusesResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }



        /// <param name="body">The body of the request.</param>
        public virtual CustombatchRequest Custombatch(Google.Apis.ShoppingContent.v2.Data.DatafeedstatusesCustomBatchRequest body)
        {
            return new CustombatchRequest(service, body);
        }


        public class CustombatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.DatafeedstatusesCustomBatchResponse>
        {
            /// <summary>Constructs a new Custombatch request.</summary>
            public CustombatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.DatafeedstatusesCustomBatchRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.DatafeedstatusesCustomBatchRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "custombatch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "datafeedstatuses/batch"; }
            }

            /// <summary>Initializes Custombatch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Retrieves the status of a datafeed from your Merchant Center account. This method can only be
        /// called for non-multi-client accounts.</summary>
        /// <param name="merchantId"></param>
        /// <param name="datafeedId"></param>
        public virtual GetRequest Get(ulong merchantId, ulong datafeedId)
        {
            return new GetRequest(service, merchantId, datafeedId);
        }

        /// <summary>Retrieves the status of a datafeed from your Merchant Center account. This method can only be
        /// called for non-multi-client accounts.</summary>
        public class GetRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.DatafeedStatus>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, ulong merchantId, ulong datafeedId)
                : base(service)
            {
                MerchantId = merchantId;
                DatafeedId = datafeedId;
                InitParameters();
            }



            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }


            [Google.Apis.Util.RequestParameterAttribute("datafeedId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong DatafeedId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/datafeedstatuses/{datafeedId}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "datafeedId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "datafeedId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Lists the statuses of the datafeeds in your Merchant Center account. This method can only be called
        /// for non-multi-client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        public virtual ListRequest List(ulong merchantId)
        {
            return new ListRequest(service, merchantId);
        }

        /// <summary>Lists the statuses of the datafeeds in your Merchant Center account. This method can only be called
        /// for non-multi-client accounts.</summary>
        public class ListRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.DatafeedstatusesListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The maximum number of products to return in the response, used for paging.</summary>
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> MaxResults { get; set; }

            /// <summary>The token returned by the previous request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/datafeedstatuses"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "inventory" collection of methods.</summary>
    public class InventoryResource
    {
        private const string Resource = "inventory";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public InventoryResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Updates price and availability for multiple products or stores in a single request. This operation
        /// does not update the expiration date of the products. This method can only be called for non-multi-client
        /// accounts.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual CustombatchRequest Custombatch(Google.Apis.ShoppingContent.v2.Data.InventoryCustomBatchRequest body)
        {
            return new CustombatchRequest(service, body);
        }

        /// <summary>Updates price and availability for multiple products or stores in a single request. This operation
        /// does not update the expiration date of the products. This method can only be called for non-multi-client
        /// accounts.</summary>
        public class CustombatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.InventoryCustomBatchResponse>
        {
            /// <summary>Constructs a new Custombatch request.</summary>
            public CustombatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.InventoryCustomBatchRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }


            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.InventoryCustomBatchRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "custombatch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "inventory/batch"; }
            }

            /// <summary>Initializes Custombatch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates price and availability of a product in your Merchant Center account. This operation does
        /// not update the expiration date of the product. This method can only be called for non-multi-client
        /// accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="storeCode">The code of the
        /// store for which to update price and availability. Use online to update price and availability of an online
        /// product.</param>
        /// <param name="productId">The ID of the product for which to update price and
        /// availability.</param>
        public virtual SetRequest Set(Google.Apis.ShoppingContent.v2.Data.InventorySetRequest body, ulong merchantId, string storeCode, string productId)
        {
            return new SetRequest(service, body, merchantId, storeCode, productId);
        }

        /// <summary>Updates price and availability of a product in your Merchant Center account. This operation does
        /// not update the expiration date of the product. This method can only be called for non-multi-client
        /// accounts.</summary>
        public class SetRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.InventorySetResponse>
        {
            /// <summary>Constructs a new Set request.</summary>
            public SetRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.InventorySetRequest body, ulong merchantId, string storeCode, string productId)
                : base(service)
            {
                MerchantId = merchantId;
                StoreCode = storeCode;
                ProductId = productId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The code of the store for which to update price and availability. Use online to update price
            /// and availability of an online product.</summary>
            [Google.Apis.Util.RequestParameterAttribute("storeCode", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string StoreCode { get; private set; }

            /// <summary>The ID of the product for which to update price and availability.</summary>
            [Google.Apis.Util.RequestParameterAttribute("productId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProductId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.InventorySetRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "set"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/inventory/{storeCode}/products/{productId}"; }
            }

            /// <summary>Initializes Set parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "storeCode", new Google.Apis.Discovery.Parameter
                    {
                        Name = "storeCode",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "productId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "productId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "orders" collection of methods.</summary>
    public class OrdersResource
    {
        private const string Resource = "orders";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public OrdersResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Marks an order as acknowledged. This method can only be called for non-multi-client
        /// accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="orderId">The ID of the
        /// order.</param>
        public virtual AcknowledgeRequest Acknowledge(Google.Apis.ShoppingContent.v2.Data.OrdersAcknowledgeRequest body, ulong merchantId, string orderId)
        {
            return new AcknowledgeRequest(service, body, merchantId, orderId);
        }

        /// <summary>Marks an order as acknowledged. This method can only be called for non-multi-client
        /// accounts.</summary>
        public class AcknowledgeRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersAcknowledgeResponse>
        {
            /// <summary>Constructs a new Acknowledge request.</summary>
            public AcknowledgeRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.OrdersAcknowledgeRequest body, ulong merchantId, string orderId)
                : base(service)
            {
                MerchantId = merchantId;
                OrderId = orderId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the order.</summary>
            [Google.Apis.Util.RequestParameterAttribute("orderId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string OrderId { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.OrdersAcknowledgeRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "acknowledge"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/orders/{orderId}/acknowledge"; }
            }

            /// <summary>Initializes Acknowledge parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "orderId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "orderId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Sandbox only. Moves a test order from state "inProgress" to state "pendingShipment". This method
        /// can only be called for non-multi-client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="orderId">The ID of the test
        /// order to modify.</param>
        public virtual AdvancetestorderRequest Advancetestorder(ulong merchantId, string orderId)
        {
            return new AdvancetestorderRequest(service, merchantId, orderId);
        }

        /// <summary>Sandbox only. Moves a test order from state "inProgress" to state "pendingShipment". This method
        /// can only be called for non-multi-client accounts.</summary>
        public class AdvancetestorderRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersAdvanceTestOrderResponse>
        {
            /// <summary>Constructs a new Advancetestorder request.</summary>
            public AdvancetestorderRequest(Google.Apis.Services.IClientService service, ulong merchantId, string orderId)
                : base(service)
            {
                MerchantId = merchantId;
                OrderId = orderId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the test order to modify.</summary>
            [Google.Apis.Util.RequestParameterAttribute("orderId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string OrderId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "advancetestorder"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/testorders/{orderId}/advance"; }
            }

            /// <summary>Initializes Advancetestorder parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "orderId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "orderId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Cancels all line items in an order. This method can only be called for non-multi-client
        /// accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="orderId">The ID of the order
        /// to cancel.</param>
        public virtual CancelRequest Cancel(Google.Apis.ShoppingContent.v2.Data.OrdersCancelRequest body, ulong merchantId, string orderId)
        {
            return new CancelRequest(service, body, merchantId, orderId);
        }

        /// <summary>Cancels all line items in an order. This method can only be called for non-multi-client
        /// accounts.</summary>
        public class CancelRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersCancelResponse>
        {
            /// <summary>Constructs a new Cancel request.</summary>
            public CancelRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.OrdersCancelRequest body, ulong merchantId, string orderId)
                : base(service)
            {
                MerchantId = merchantId;
                OrderId = orderId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the order to cancel.</summary>
            [Google.Apis.Util.RequestParameterAttribute("orderId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string OrderId { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.OrdersCancelRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "cancel"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/orders/{orderId}/cancel"; }
            }

            /// <summary>Initializes Cancel parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "orderId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "orderId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Cancels a line item. This method can only be called for non-multi-client accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="orderId">The ID of the
        /// order.</param>
        public virtual CancellineitemRequest Cancellineitem(Google.Apis.ShoppingContent.v2.Data.OrdersCancelLineItemRequest body, ulong merchantId, string orderId)
        {
            return new CancellineitemRequest(service, body, merchantId, orderId);
        }

        /// <summary>Cancels a line item. This method can only be called for non-multi-client accounts.</summary>
        public class CancellineitemRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersCancelLineItemResponse>
        {
            /// <summary>Constructs a new Cancellineitem request.</summary>
            public CancellineitemRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.OrdersCancelLineItemRequest body, ulong merchantId, string orderId)
                : base(service)
            {
                MerchantId = merchantId;
                OrderId = orderId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the order.</summary>
            [Google.Apis.Util.RequestParameterAttribute("orderId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string OrderId { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.OrdersCancelLineItemRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "cancellineitem"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/orders/{orderId}/cancelLineItem"; }
            }

            /// <summary>Initializes Cancellineitem parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "orderId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "orderId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Sandbox only. Creates a test order. This method can only be called for non-multi-client
        /// accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        public virtual CreatetestorderRequest Createtestorder(Google.Apis.ShoppingContent.v2.Data.OrdersCreateTestOrderRequest body, ulong merchantId)
        {
            return new CreatetestorderRequest(service, body, merchantId);
        }

        /// <summary>Sandbox only. Creates a test order. This method can only be called for non-multi-client
        /// accounts.</summary>
        public class CreatetestorderRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersCreateTestOrderResponse>
        {
            /// <summary>Constructs a new Createtestorder request.</summary>
            public CreatetestorderRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.OrdersCreateTestOrderRequest body, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.OrdersCreateTestOrderRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "createtestorder"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/testorders"; }
            }

            /// <summary>Initializes Createtestorder parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Retrieves or modifies multiple orders in a single request. This method can only be called for non-
        /// multi-client accounts.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual CustombatchRequest Custombatch(Google.Apis.ShoppingContent.v2.Data.OrdersCustomBatchRequest body)
        {
            return new CustombatchRequest(service, body);
        }

        /// <summary>Retrieves or modifies multiple orders in a single request. This method can only be called for non-
        /// multi-client accounts.</summary>
        public class CustombatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersCustomBatchResponse>
        {
            /// <summary>Constructs a new Custombatch request.</summary>
            public CustombatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.OrdersCustomBatchRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.OrdersCustomBatchRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "custombatch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "orders/batch"; }
            }

            /// <summary>Initializes Custombatch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Retrieves an order from your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="orderId">The ID of the
        /// order.</param>
        public virtual GetRequest Get(ulong merchantId, string orderId)
        {
            return new GetRequest(service, merchantId, orderId);
        }

        /// <summary>Retrieves an order from your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        public class GetRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.Order>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, ulong merchantId, string orderId)
                : base(service)
            {
                MerchantId = merchantId;
                OrderId = orderId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the order.</summary>
            [Google.Apis.Util.RequestParameterAttribute("orderId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string OrderId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/orders/{orderId}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "orderId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "orderId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Retrieves an order using merchant order id. This method can only be called for non-multi-client
        /// accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="merchantOrderId">The merchant
        /// order id to be looked for.</param>
        public virtual GetbymerchantorderidRequest Getbymerchantorderid(ulong merchantId, string merchantOrderId)
        {
            return new GetbymerchantorderidRequest(service, merchantId, merchantOrderId);
        }

        /// <summary>Retrieves an order using merchant order id. This method can only be called for non-multi-client
        /// accounts.</summary>
        public class GetbymerchantorderidRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersGetByMerchantOrderIdResponse>
        {
            /// <summary>Constructs a new Getbymerchantorderid request.</summary>
            public GetbymerchantorderidRequest(Google.Apis.Services.IClientService service, ulong merchantId, string merchantOrderId)
                : base(service)
            {
                MerchantId = merchantId;
                MerchantOrderId = merchantOrderId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The merchant order id to be looked for.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantOrderId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string MerchantOrderId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "getbymerchantorderid"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/ordersbymerchantid/{merchantOrderId}"; }
            }

            /// <summary>Initializes Getbymerchantorderid parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "merchantOrderId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantOrderId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Sandbox only. Retrieves an order template that can be used to quickly create a new order in
        /// sandbox. This method can only be called for non-multi-client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="templateName">The name of the
        /// template to retrieve.</param>
        public virtual GettestordertemplateRequest Gettestordertemplate(ulong merchantId, GettestordertemplateRequest.TemplateNameEnum templateName)
        {
            return new GettestordertemplateRequest(service, merchantId, templateName);
        }

        /// <summary>Sandbox only. Retrieves an order template that can be used to quickly create a new order in
        /// sandbox. This method can only be called for non-multi-client accounts.</summary>
        public class GettestordertemplateRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersGetTestOrderTemplateResponse>
        {
            /// <summary>Constructs a new Gettestordertemplate request.</summary>
            public GettestordertemplateRequest(Google.Apis.Services.IClientService service, ulong merchantId, GettestordertemplateRequest.TemplateNameEnum templateName)
                : base(service)
            {
                MerchantId = merchantId;
                TemplateName = templateName;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The name of the template to retrieve.</summary>
            [Google.Apis.Util.RequestParameterAttribute("templateName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual TemplateNameEnum TemplateName { get; private set; }

            /// <summary>The name of the template to retrieve.</summary>
            public enum TemplateNameEnum
            {
                [Google.Apis.Util.StringValueAttribute("template1")]
                Template1,
                [Google.Apis.Util.StringValueAttribute("template1a")]
                Template1a,
                [Google.Apis.Util.StringValueAttribute("template1b")]
                Template1b,
                [Google.Apis.Util.StringValueAttribute("template2")]
                Template2,
            }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "gettestordertemplate"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/testordertemplates/{templateName}"; }
            }

            /// <summary>Initializes Gettestordertemplate parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "templateName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "templateName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Lists the orders in your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        public virtual ListRequest List(ulong merchantId)
        {
            return new ListRequest(service, merchantId);
        }

        /// <summary>Lists the orders in your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        public class ListRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>Obtains orders that match the acknowledgement status. When set to true, obtains orders that
            /// have been acknowledged. When false, obtains orders that have not been acknowledged. We recommend using
            /// this filter set to false, in conjunction with the acknowledge call, such that only un-acknowledged
            /// orders are returned.</summary>
            [Google.Apis.Util.RequestParameterAttribute("acknowledged", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> Acknowledged { get; set; }

            /// <summary>The maximum number of orders to return in the response, used for paging. The default value is
            /// 25 orders per page, and the maximum allowed value is 250 orders per page. Known issue: All List calls
            /// will return all Orders without limit regardless of the value of this field.</summary>
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> MaxResults { get; set; }

            /// <summary>The ordering of the returned list. The only supported value are placedDate desc and placedDate
            /// asc for now, which returns orders sorted by placement date. "placedDate desc" stands for listing orders
            /// by placement date, from oldest to most recent. "placedDate asc" stands for listing orders by placement
            /// date, from most recent to oldest. In future releases we'll support other sorting criteria.</summary>
            [Google.Apis.Util.RequestParameterAttribute("orderBy", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<OrderByEnum> OrderBy { get; set; }

            /// <summary>The ordering of the returned list. The only supported value are placedDate desc and placedDate
            /// asc for now, which returns orders sorted by placement date. "placedDate desc" stands for listing orders
            /// by placement date, from oldest to most recent. "placedDate asc" stands for listing orders by placement
            /// date, from most recent to oldest. In future releases we'll support other sorting criteria.</summary>
            public enum OrderByEnum
            {
                [Google.Apis.Util.StringValueAttribute("placedDate asc")]
                PlacedDateAsc,
                [Google.Apis.Util.StringValueAttribute("placedDate desc")]
                PlacedDateDesc,
            }

            /// <summary>The token returned by the previous request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }

            /// <summary>Obtains orders placed before this date (exclusively), in ISO 8601 format.</summary>
            [Google.Apis.Util.RequestParameterAttribute("placedDateEnd", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PlacedDateEnd { get; set; }

            /// <summary>Obtains orders placed after this date (inclusively), in ISO 8601 format.</summary>
            [Google.Apis.Util.RequestParameterAttribute("placedDateStart", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PlacedDateStart { get; set; }

            /// <summary>Obtains orders that match any of the specified statuses. Multiple values can be specified with
            /// comma separation. Additionally, please note that active is a shortcut for pendingShipment and
            /// partiallyShipped, and completed is a shortcut for shipped , partiallyDelivered, delivered,
            /// partiallyReturned, returned, and canceled.</summary>
            [Google.Apis.Util.RequestParameterAttribute("statuses", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<StatusesEnum> Statuses { get; set; }

            /// <summary>Obtains orders that match any of the specified statuses. Multiple values can be specified with
            /// comma separation. Additionally, please note that active is a shortcut for pendingShipment and
            /// partiallyShipped, and completed is a shortcut for shipped , partiallyDelivered, delivered,
            /// partiallyReturned, returned, and canceled.</summary>
            public enum StatusesEnum
            {
                [Google.Apis.Util.StringValueAttribute("active")]
                Active,
                [Google.Apis.Util.StringValueAttribute("canceled")]
                Canceled,
                [Google.Apis.Util.StringValueAttribute("completed")]
                Completed,
                [Google.Apis.Util.StringValueAttribute("delivered")]
                Delivered,
                [Google.Apis.Util.StringValueAttribute("inProgress")]
                InProgress,
                [Google.Apis.Util.StringValueAttribute("partiallyDelivered")]
                PartiallyDelivered,
                [Google.Apis.Util.StringValueAttribute("partiallyReturned")]
                PartiallyReturned,
                [Google.Apis.Util.StringValueAttribute("partiallyShipped")]
                PartiallyShipped,
                [Google.Apis.Util.StringValueAttribute("pendingShipment")]
                PendingShipment,
                [Google.Apis.Util.StringValueAttribute("returned")]
                Returned,
                [Google.Apis.Util.StringValueAttribute("shipped")]
                Shipped,
            }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/orders"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "acknowledged", new Google.Apis.Discovery.Parameter
                    {
                        Name = "acknowledged",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "orderBy", new Google.Apis.Discovery.Parameter
                    {
                        Name = "orderBy",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "placedDateEnd", new Google.Apis.Discovery.Parameter
                    {
                        Name = "placedDateEnd",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "placedDateStart", new Google.Apis.Discovery.Parameter
                    {
                        Name = "placedDateStart",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "statuses", new Google.Apis.Discovery.Parameter
                    {
                        Name = "statuses",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Refund a portion of the order, up to the full amount paid. This method can only be called for non-
        /// multi-client accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="orderId">The ID of the order
        /// to refund.</param>
        public virtual RefundRequest Refund(Google.Apis.ShoppingContent.v2.Data.OrdersRefundRequest body, ulong merchantId, string orderId)
        {
            return new RefundRequest(service, body, merchantId, orderId);
        }

        /// <summary>Refund a portion of the order, up to the full amount paid. This method can only be called for non-
        /// multi-client accounts.</summary>
        public class RefundRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersRefundResponse>
        {
            /// <summary>Constructs a new Refund request.</summary>
            public RefundRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.OrdersRefundRequest body, ulong merchantId, string orderId)
                : base(service)
            {
                MerchantId = merchantId;
                OrderId = orderId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the order to refund.</summary>
            [Google.Apis.Util.RequestParameterAttribute("orderId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string OrderId { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.OrdersRefundRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "refund"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/orders/{orderId}/refund"; }
            }

            /// <summary>Initializes Refund parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "orderId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "orderId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Returns a line item. This method can only be called for non-multi-client accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="orderId">The ID of the
        /// order.</param>
        public virtual ReturnlineitemRequest Returnlineitem(Google.Apis.ShoppingContent.v2.Data.OrdersReturnLineItemRequest body, ulong merchantId, string orderId)
        {
            return new ReturnlineitemRequest(service, body, merchantId, orderId);
        }

        /// <summary>Returns a line item. This method can only be called for non-multi-client accounts.</summary>
        public class ReturnlineitemRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersReturnLineItemResponse>
        {
            /// <summary>Constructs a new Returnlineitem request.</summary>
            public ReturnlineitemRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.OrdersReturnLineItemRequest body, ulong merchantId, string orderId)
                : base(service)
            {
                MerchantId = merchantId;
                OrderId = orderId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the order.</summary>
            [Google.Apis.Util.RequestParameterAttribute("orderId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string OrderId { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.OrdersReturnLineItemRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "returnlineitem"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/orders/{orderId}/returnLineItem"; }
            }

            /// <summary>Initializes Returnlineitem parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "orderId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "orderId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Marks line item(s) as shipped. This method can only be called for non-multi-client
        /// accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="orderId">The ID of the
        /// order.</param>
        public virtual ShiplineitemsRequest Shiplineitems(Google.Apis.ShoppingContent.v2.Data.OrdersShipLineItemsRequest body, ulong merchantId, string orderId)
        {
            return new ShiplineitemsRequest(service, body, merchantId, orderId);
        }

        /// <summary>Marks line item(s) as shipped. This method can only be called for non-multi-client
        /// accounts.</summary>
        public class ShiplineitemsRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersShipLineItemsResponse>
        {
            /// <summary>Constructs a new Shiplineitems request.</summary>
            public ShiplineitemsRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.OrdersShipLineItemsRequest body, ulong merchantId, string orderId)
                : base(service)
            {
                MerchantId = merchantId;
                OrderId = orderId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the order.</summary>
            [Google.Apis.Util.RequestParameterAttribute("orderId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string OrderId { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.OrdersShipLineItemsRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "shiplineitems"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/orders/{orderId}/shipLineItems"; }
            }

            /// <summary>Initializes Shiplineitems parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "orderId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "orderId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates the merchant order ID for a given order. This method can only be called for non-multi-
        /// client accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="orderId">The ID of the
        /// order.</param>
        public virtual UpdatemerchantorderidRequest Updatemerchantorderid(Google.Apis.ShoppingContent.v2.Data.OrdersUpdateMerchantOrderIdRequest body, ulong merchantId, string orderId)
        {
            return new UpdatemerchantorderidRequest(service, body, merchantId, orderId);
        }

        /// <summary>Updates the merchant order ID for a given order. This method can only be called for non-multi-
        /// client accounts.</summary>
        public class UpdatemerchantorderidRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersUpdateMerchantOrderIdResponse>
        {
            /// <summary>Constructs a new Updatemerchantorderid request.</summary>
            public UpdatemerchantorderidRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.OrdersUpdateMerchantOrderIdRequest body, ulong merchantId, string orderId)
                : base(service)
            {
                MerchantId = merchantId;
                OrderId = orderId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the order.</summary>
            [Google.Apis.Util.RequestParameterAttribute("orderId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string OrderId { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.OrdersUpdateMerchantOrderIdRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "updatemerchantorderid"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/orders/{orderId}/updateMerchantOrderId"; }
            }

            /// <summary>Initializes Updatemerchantorderid parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "orderId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "orderId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates a shipment's status, carrier, and/or tracking ID. This method can only be called for non-
        /// multi-client accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="orderId">The ID of the
        /// order.</param>
        public virtual UpdateshipmentRequest Updateshipment(Google.Apis.ShoppingContent.v2.Data.OrdersUpdateShipmentRequest body, ulong merchantId, string orderId)
        {
            return new UpdateshipmentRequest(service, body, merchantId, orderId);
        }

        /// <summary>Updates a shipment's status, carrier, and/or tracking ID. This method can only be called for non-
        /// multi-client accounts.</summary>
        public class UpdateshipmentRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.OrdersUpdateShipmentResponse>
        {
            /// <summary>Constructs a new Updateshipment request.</summary>
            public UpdateshipmentRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.OrdersUpdateShipmentRequest body, ulong merchantId, string orderId)
                : base(service)
            {
                MerchantId = merchantId;
                OrderId = orderId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the order.</summary>
            [Google.Apis.Util.RequestParameterAttribute("orderId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string OrderId { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.OrdersUpdateShipmentRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "updateshipment"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/orders/{orderId}/updateShipment"; }
            }

            /// <summary>Initializes Updateshipment parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "orderId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "orderId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "products" collection of methods.</summary>
    public class ProductsResource
    {
        private const string Resource = "products";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public ProductsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Retrieves, inserts, and deletes multiple products in a single request. This method can only be
        /// called for non-multi-client accounts.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual CustombatchRequest Custombatch(Google.Apis.ShoppingContent.v2.Data.ProductsCustomBatchRequest body)
        {
            return new CustombatchRequest(service, body);
        }

        /// <summary>Retrieves, inserts, and deletes multiple products in a single request. This method can only be
        /// called for non-multi-client accounts.</summary>
        public class CustombatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.ProductsCustomBatchResponse>
        {
            /// <summary>Constructs a new Custombatch request.</summary>
            public CustombatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.ProductsCustomBatchRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }


            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.ProductsCustomBatchRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "custombatch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "products/batch"; }
            }

            /// <summary>Initializes Custombatch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Deletes a product from your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="productId">The ID of the
        /// product.</param>
        public virtual DeleteRequest Delete(ulong merchantId, string productId)
        {
            return new DeleteRequest(service, merchantId, productId);
        }

        /// <summary>Deletes a product from your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        public class DeleteRequest : ShoppingContentBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Delete request.</summary>
            public DeleteRequest(Google.Apis.Services.IClientService service, ulong merchantId, string productId)
                : base(service)
            {
                MerchantId = merchantId;
                ProductId = productId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the product.</summary>
            [Google.Apis.Util.RequestParameterAttribute("productId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProductId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "delete"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "DELETE"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/products/{productId}"; }
            }

            /// <summary>Initializes Delete parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "productId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "productId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Retrieves a product from your Merchant Center account. This method can only be called for non-
        /// multi-client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="productId">The ID of the
        /// product.</param>
        public virtual GetRequest Get(ulong merchantId, string productId)
        {
            return new GetRequest(service, merchantId, productId);
        }

        /// <summary>Retrieves a product from your Merchant Center account. This method can only be called for non-
        /// multi-client accounts.</summary>
        public class GetRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.Product>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, ulong merchantId, string productId)
                : base(service)
            {
                MerchantId = merchantId;
                ProductId = productId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the product.</summary>
            [Google.Apis.Util.RequestParameterAttribute("productId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProductId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/products/{productId}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "productId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "productId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Uploads a product to your Merchant Center account. If an item with the same channel,
        /// contentLanguage, offerId, and targetCountry already exists, this method updates that entry. This method can
        /// only be called for non-multi-client accounts.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        public virtual InsertRequest Insert(Google.Apis.ShoppingContent.v2.Data.Product body, ulong merchantId)
        {
            return new InsertRequest(service, body, merchantId);
        }

        /// <summary>Uploads a product to your Merchant Center account. If an item with the same channel,
        /// contentLanguage, offerId, and targetCountry already exists, this method updates that entry. This method can
        /// only be called for non-multi-client accounts.</summary>
        public class InsertRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.Product>
        {
            /// <summary>Constructs a new Insert request.</summary>
            public InsertRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.Product body, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.Product Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "insert"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/products"; }
            }

            /// <summary>Initializes Insert parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Lists the products in your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        public virtual ListRequest List(ulong merchantId)
        {
            return new ListRequest(service, merchantId);
        }

        /// <summary>Lists the products in your Merchant Center account. This method can only be called for non-multi-
        /// client accounts.</summary>
        public class ListRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.ProductsListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>Flag to include the invalid inserted items in the result of the list request. By default the
            /// invalid items are not shown (the default value is false).</summary>
            [Google.Apis.Util.RequestParameterAttribute("includeInvalidInsertedItems", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> IncludeInvalidInsertedItems { get; set; }

            /// <summary>The maximum number of products to return in the response, used for paging.</summary>
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> MaxResults { get; set; }

            /// <summary>The token returned by the previous request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/products"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "includeInvalidInsertedItems", new Google.Apis.Discovery.Parameter
                    {
                        Name = "includeInvalidInsertedItems",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "productstatuses" collection of methods.</summary>
    public class ProductstatusesResource
    {
        private const string Resource = "productstatuses";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public ProductstatusesResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Gets the statuses of multiple products in a single request. This method can only be called for non-
        /// multi-client accounts.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual CustombatchRequest Custombatch(Google.Apis.ShoppingContent.v2.Data.ProductstatusesCustomBatchRequest body)
        {
            return new CustombatchRequest(service, body);
        }

        /// <summary>Gets the statuses of multiple products in a single request. This method can only be called for non-
        /// multi-client accounts.</summary>
        public class CustombatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.ProductstatusesCustomBatchResponse>
        {
            /// <summary>Constructs a new Custombatch request.</summary>
            public CustombatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.ProductstatusesCustomBatchRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.ProductstatusesCustomBatchRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "custombatch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "productstatuses/batch"; }
            }

            /// <summary>Initializes Custombatch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Gets the status of a product from your Merchant Center account. This method can only be called for
        /// non-multi-client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="productId">The ID of the
        /// product.</param>
        public virtual GetRequest Get(ulong merchantId, string productId)
        {
            return new GetRequest(service, merchantId, productId);
        }

        /// <summary>Gets the status of a product from your Merchant Center account. This method can only be called for
        /// non-multi-client accounts.</summary>
        public class GetRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.ProductStatus>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, ulong merchantId, string productId)
                : base(service)
            {
                MerchantId = merchantId;
                ProductId = productId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the product.</summary>
            [Google.Apis.Util.RequestParameterAttribute("productId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ProductId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/productstatuses/{productId}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "productId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "productId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Lists the statuses of the products in your Merchant Center account. This method can only be called
        /// for non-multi-client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        public virtual ListRequest List(ulong merchantId)
        {
            return new ListRequest(service, merchantId);
        }

        /// <summary>Lists the statuses of the products in your Merchant Center account. This method can only be called
        /// for non-multi-client accounts.</summary>
        public class ListRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.ProductstatusesListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>Flag to include the invalid inserted items in the result of the list request. By default the
            /// invalid items are not shown (the default value is false).</summary>
            [Google.Apis.Util.RequestParameterAttribute("includeInvalidInsertedItems", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> IncludeInvalidInsertedItems { get; set; }

            /// <summary>The maximum number of product statuses to return in the response, used for paging.</summary>
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> MaxResults { get; set; }

            /// <summary>The token returned by the previous request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/productstatuses"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "includeInvalidInsertedItems", new Google.Apis.Discovery.Parameter
                    {
                        Name = "includeInvalidInsertedItems",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "shippingsettings" collection of methods.</summary>
    public class ShippingsettingsResource
    {
        private const string Resource = "shippingsettings";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public ShippingsettingsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Retrieves and updates the shipping settings of multiple accounts in a single request.</summary>
        /// <param name="body">The body of the request.</param>
        public virtual CustombatchRequest Custombatch(Google.Apis.ShoppingContent.v2.Data.ShippingsettingsCustomBatchRequest body)
        {
            return new CustombatchRequest(service, body);
        }

        /// <summary>Retrieves and updates the shipping settings of multiple accounts in a single request.</summary>
        public class CustombatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.ShippingsettingsCustomBatchResponse>
        {
            /// <summary>Constructs a new Custombatch request.</summary>
            public CustombatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.ShippingsettingsCustomBatchRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }


            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.ShippingsettingsCustomBatchRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "custombatch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "shippingsettings/batch"; }
            }

            /// <summary>Initializes Custombatch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Retrieves the shipping settings of the account. This method can only be called for accounts to
        /// which the managing account has access: either the managing account itself or sub-accounts if the managing
        /// account is a multi-client account.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account for which to get/update shipping settings.</param>
        public virtual GetRequest Get(ulong merchantId, ulong accountId)
        {
            return new GetRequest(service, merchantId, accountId);
        }

        /// <summary>Retrieves the shipping settings of the account. This method can only be called for accounts to
        /// which the managing account has access: either the managing account itself or sub-accounts if the managing
        /// account is a multi-client account.</summary>
        public class GetRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.ShippingSettings>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account for which to get/update shipping settings.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/shippingsettings/{accountId}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Retrieves supported carriers and carrier services for an account.</summary>
        /// <param name="merchantId">The ID of the account for which to retrieve the supported carriers.</param>
        public virtual GetsupportedcarriersRequest Getsupportedcarriers(ulong merchantId)
        {
            return new GetsupportedcarriersRequest(service, merchantId);
        }

        /// <summary>Retrieves supported carriers and carrier services for an account.</summary>
        public class GetsupportedcarriersRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.ShippingsettingsGetSupportedCarriersResponse>
        {
            /// <summary>Constructs a new Getsupportedcarriers request.</summary>
            public GetsupportedcarriersRequest(Google.Apis.Services.IClientService service, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                InitParameters();
            }


            /// <summary>The ID of the account for which to retrieve the supported carriers.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "getsupportedcarriers"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/supportedCarriers"; }
            }

            /// <summary>Initializes Getsupportedcarriers parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Lists the shipping settings of the sub-accounts in your Merchant Center account. This method can
        /// only be called for multi-client accounts.</summary>
        /// <param name="merchantId">The ID of the managing account.</param>
        public virtual ListRequest List(ulong merchantId)
        {
            return new ListRequest(service, merchantId);
        }

        /// <summary>Lists the shipping settings of the sub-accounts in your Merchant Center account. This method can
        /// only be called for multi-client accounts.</summary>
        public class ListRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.ShippingsettingsListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, ulong merchantId)
                : base(service)
            {
                MerchantId = merchantId;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The maximum number of shipping settings to return in the response, used for paging.</summary>
            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> MaxResults { get; set; }

            /// <summary>The token returned by the previous request.</summary>
            [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string PageToken { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/shippingsettings"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates the shipping settings of the account. This method can only be called for accounts to which
        /// the managing account has access: either the managing account itself or sub-accounts if the managing account
        /// is a multi-client account. This method supports patch semantics.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account for which to get/update shipping settings.</param>
        public virtual PatchRequest Patch(Google.Apis.ShoppingContent.v2.Data.ShippingSettings body, ulong merchantId, ulong accountId)
        {
            return new PatchRequest(service, body, merchantId, accountId);
        }

        /// <summary>Updates the shipping settings of the account. This method can only be called for accounts to which
        /// the managing account has access: either the managing account itself or sub-accounts if the managing account
        /// is a multi-client account. This method supports patch semantics.</summary>
        public class PatchRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.ShippingSettings>
        {
            /// <summary>Constructs a new Patch request.</summary>
            public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.ShippingSettings body, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account for which to get/update shipping settings.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.ShippingSettings Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "patch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "PATCH"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/shippingsettings/{accountId}"; }
            }

            /// <summary>Initializes Patch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates the shipping settings of the account. This method can only be called for accounts to which
        /// the managing account has access: either the managing account itself or sub-accounts if the managing account
        /// is a multi-client account.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="merchantId">The ID of the managing account.</param>
        /// <param name="accountId">The ID of the
        /// account for which to get/update shipping settings.</param>
        public virtual UpdateRequest Update(Google.Apis.ShoppingContent.v2.Data.ShippingSettings body, ulong merchantId, ulong accountId)
        {
            return new UpdateRequest(service, body, merchantId, accountId);
        }

        /// <summary>Updates the shipping settings of the account. This method can only be called for accounts to which
        /// the managing account has access: either the managing account itself or sub-accounts if the managing account
        /// is a multi-client account.</summary>
        public class UpdateRequest : ShoppingContentBaseServiceRequest<Google.Apis.ShoppingContent.v2.Data.ShippingSettings>
        {
            /// <summary>Constructs a new Update request.</summary>
            public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.ShoppingContent.v2.Data.ShippingSettings body, ulong merchantId, ulong accountId)
                : base(service)
            {
                MerchantId = merchantId;
                AccountId = accountId;
                Body = body;
                InitParameters();
            }


            /// <summary>The ID of the managing account.</summary>
            [Google.Apis.Util.RequestParameterAttribute("merchantId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong MerchantId { get; private set; }

            /// <summary>The ID of the account for which to get/update shipping settings.</summary>
            [Google.Apis.Util.RequestParameterAttribute("accountId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual ulong AccountId { get; private set; }

            /// <summary>Flag to run the request in dry-run mode.</summary>
            [Google.Apis.Util.RequestParameterAttribute("dryRun", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> DryRun { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.ShoppingContent.v2.Data.ShippingSettings Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "update"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "PUT"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{merchantId}/shippingsettings/{accountId}"; }
            }

            /// <summary>Initializes Update parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "merchantId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "merchantId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "accountId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "accountId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "dryRun", new Google.Apis.Discovery.Parameter
                    {
                        Name = "dryRun",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }
}

namespace Google.Apis.ShoppingContent.v2.Data
{    

    /// <summary>Account data.</summary>
    public class Account : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Indicates whether the merchant sells adult content.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("adultContent")]
        public virtual System.Nullable<bool> AdultContent { get; set; } 

        /// <summary>List of linked AdWords accounts that are active or pending approval. To create a new link request,
        /// add a new link with status active to the list. It will remain in a pending state until approved or rejected
        /// either in the AdWords interface or through the  AdWords API. To delete an active link, or to cancel a link
        /// request, remove it from the list.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("adwordsLinks")]
        public virtual System.Collections.Generic.IList<AccountAdwordsLink> AdwordsLinks { get; set; } 

        /// <summary>Merchant Center account ID.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual System.Nullable<ulong> Id { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string "content#account".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>Display name for the account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>URL for individual seller reviews, i.e., reviews for each child account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reviewsUrl")]
        public virtual string ReviewsUrl { get; set; } 

        /// <summary>Client-specific, locally-unique, internal ID for the child account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sellerId")]
        public virtual string SellerId { get; set; } 

        /// <summary>Users with access to the account. Every account (except for subaccounts) must have at least one
        /// admin user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("users")]
        public virtual System.Collections.Generic.IList<AccountUser> Users { get; set; } 

        /// <summary>The merchant's website.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("websiteUrl")]
        public virtual string WebsiteUrl { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountAdwordsLink : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Customer ID of the AdWords account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("adwordsId")]
        public virtual System.Nullable<ulong> AdwordsId { get; set; } 

        /// <summary>Status of the link between this Merchant Center account and the AdWords account. Upon retrieval, it
        /// represents the actual status of the link and can be either active if it was approved in Google AdWords or
        /// pending if it's pending approval. Upon insertion, it represents the intended status of the link. Re-
        /// uploading a link with status active when it's still pending or with status pending when it's already active
        /// will have no effect: the status will remain unchanged. Re-uploading a link with deprecated status inactive
        /// is equivalent to not submitting the link at all and will delete the link if it was active or cancel the link
        /// request if it was pending.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("status")]
        public virtual string Status { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountIdentifier : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The aggregator ID, set for aggregators and subaccounts (in that case, it represents the aggregator
        /// of the subaccount).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("aggregatorId")]
        public virtual System.Nullable<ulong> AggregatorId { get; set; } 

        /// <summary>The merchant account ID, set for individual accounts and subaccounts.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantId")]
        public virtual System.Nullable<ulong> MerchantId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The shipping settings of a merchant account.</summary>
    public class AccountShipping : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the account to which these account shipping settings belong.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountId")]
        public virtual System.Nullable<ulong> AccountId { get; set; } 

        /// <summary>Carrier-based shipping calculations.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrierRates")]
        public virtual System.Collections.Generic.IList<AccountShippingCarrierRate> CarrierRates { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accountShipping".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>Location groups for shipping.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("locationGroups")]
        public virtual System.Collections.Generic.IList<AccountShippingLocationGroup> LocationGroups { get; set; } 

        /// <summary>Rate tables definitions.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("rateTables")]
        public virtual System.Collections.Generic.IList<AccountShippingRateTable> RateTables { get; set; } 

        /// <summary>Shipping services describing shipping fees calculation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("services")]
        public virtual System.Collections.Generic.IList<AccountShippingShippingService> Services { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A carrier-calculated shipping rate.</summary>
    public class AccountShippingCarrierRate : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The carrier that is responsible for the shipping, such as "UPS", "FedEx", or "USPS".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrier")]
        public virtual string Carrier { get; set; } 

        /// <summary>The carrier service, such as "Ground" or "2Day".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrierService")]
        public virtual string CarrierService { get; set; } 

        /// <summary>Additive shipping rate modifier.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("modifierFlatRate")]
        public virtual Price ModifierFlatRate { get; set; } 

        /// <summary>Multiplicative shipping rate modifier in percent. Represented as a floating point number without
        /// the percentage character.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("modifierPercent")]
        public virtual string ModifierPercent { get; set; } 

        /// <summary>The name of the carrier rate.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The sale country for which this carrier rate is valid, represented as a CLDR territory
        /// code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("saleCountry")]
        public virtual string SaleCountry { get; set; } 

        /// <summary>Shipping origin represented as a postal code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingOrigin")]
        public virtual string ShippingOrigin { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountShippingCondition : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Delivery location in terms of a location group name. A location group with this name must be
        /// specified among location groups.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deliveryLocationGroup")]
        public virtual string DeliveryLocationGroup { get; set; } 

        /// <summary>Delivery location in terms of a location ID. Can be used to represent administrative areas, smaller
        /// country subdivisions, or cities.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deliveryLocationId")]
        public virtual System.Nullable<long> DeliveryLocationId { get; set; } 

        /// <summary>Delivery location in terms of a postal code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deliveryPostalCode")]
        public virtual string DeliveryPostalCode { get; set; } 

        /// <summary>Delivery location in terms of a postal code range.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deliveryPostalCodeRange")]
        public virtual AccountShippingPostalCodeRange DeliveryPostalCodeRange { get; set; } 

        /// <summary>Maximum shipping price. Forms an interval between the maximum of smaller prices (exclusive) and
        /// this price (inclusive).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("priceMax")]
        public virtual Price PriceMax { get; set; } 

        /// <summary>Shipping label of the product. The products with the label are matched.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingLabel")]
        public virtual string ShippingLabel { get; set; } 

        /// <summary>Maximum shipping weight. Forms an interval between the maximum of smaller weight (exclusive) and
        /// this weight (inclusive).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("weightMax")]
        public virtual Weight WeightMax { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A user-defined locations group in a given country. All the locations of the group must be of the same
    /// type.</summary>
    public class AccountShippingLocationGroup : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The CLDR territory code of the country in which this location group is.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("country")]
        public virtual string Country { get; set; } 

        /// <summary>A location ID (also called criteria ID) representing administrative areas, smaller country
        /// subdivisions (counties), or cities.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("locationIds")]
        public virtual System.Collections.Generic.IList<System.Nullable<long>> LocationIds { get; set; } 

        /// <summary>The name of the location group.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>A postal code range representing a city or a set of cities.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("postalCodeRanges")]
        public virtual System.Collections.Generic.IList<AccountShippingPostalCodeRange> PostalCodeRanges { get; set; } 

        /// <summary>A postal code representing a city or a set of cities. - A single postal code (e.g., 12345) - A
        /// postal code prefix followed by a star (e.g., 1234*)</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("postalCodes")]
        public virtual System.Collections.Generic.IList<string> PostalCodes { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A postal code range, that can be either: - A range of postal codes (e.g., start=12340, end=12359) - A
    /// range of postal codes prefixes (e.g., start=1234* end=1235*). Prefixes must be of the same length (e.g.,
    /// start=12* end=2* is invalid).</summary>
    public class AccountShippingPostalCodeRange : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The last (inclusive) postal code or prefix of the range.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("end")]
        public virtual string End { get; set; } 

        /// <summary>The first (inclusive) postal code or prefix of the range.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("start")]
        public virtual string Start { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A single or bi-dimensional table of shipping rates. Each dimension is defined in terms of consecutive
    /// price/weight ranges, delivery locations, or shipping labels.</summary>
    public class AccountShippingRateTable : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>One-dimensional table cells define one condition along the same dimension. Bi-dimensional table
        /// cells use two dimensions with respectively M and N distinct values and must contain exactly M * N cells with
        /// distinct conditions (for each possible value pairs).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("content")]
        public virtual System.Collections.Generic.IList<AccountShippingRateTableCell> Content { get; set; } 

        /// <summary>The name of the rate table.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The sale country for which this table is valid, represented as a CLDR territory code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("saleCountry")]
        public virtual string SaleCountry { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountShippingRateTableCell : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Conditions for which the cell is valid. All cells in a table must use the same dimension or pair of
        /// dimensions among price, weight, shipping label or delivery location. If no condition is specified, the cell
        /// acts as a catch-all and matches all the elements that are not matched by other cells in this
        /// dimension.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("condition")]
        public virtual AccountShippingCondition Condition { get; set; } 

        /// <summary>The rate applicable if the cell conditions are matched.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("rate")]
        public virtual Price Rate { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Shipping services provided in a country.</summary>
    public class AccountShippingShippingService : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Whether the shipping service is available.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("active")]
        public virtual System.Nullable<bool> Active { get; set; } 

        /// <summary>Calculation method for the "simple" case that needs no rules.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("calculationMethod")]
        public virtual AccountShippingShippingServiceCalculationMethod CalculationMethod { get; set; } 

        /// <summary>Decision tree for "complicated" shipping cost calculation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("costRuleTree")]
        public virtual AccountShippingShippingServiceCostRule CostRuleTree { get; set; } 

        /// <summary>The maximum number of days in transit. Must be a value between 0 and 250 included. A value of 0
        /// means same day delivery.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("maxDaysInTransit")]
        public virtual System.Nullable<ulong> MaxDaysInTransit { get; set; } 

        /// <summary>The minimum number of days in transit. Must be a value between 0 and maxDaysIntransit included. A
        /// value of 0 means same day delivery.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("minDaysInTransit")]
        public virtual System.Nullable<ulong> MinDaysInTransit { get; set; } 

        /// <summary>The name of this shipping service.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The CLDR territory code of the sale country for which this service can be used.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("saleCountry")]
        public virtual string SaleCountry { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Shipping cost calculation method. Exactly one of the field is set.</summary>
    public class AccountShippingShippingServiceCalculationMethod : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Name of the carrier rate to use for the calculation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrierRate")]
        public virtual string CarrierRate { get; set; } 

        /// <summary>Delivery is excluded. Valid only within cost rules tree.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("excluded")]
        public virtual System.Nullable<bool> Excluded { get; set; } 

        /// <summary>Fixed price shipping, represented as a floating point number associated with a currency.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("flatRate")]
        public virtual Price FlatRate { get; set; } 

        /// <summary>Percentage of the price, represented as a floating point number without the percentage
        /// character.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("percentageRate")]
        public virtual string PercentageRate { get; set; } 

        /// <summary>Name of the rate table to use for the calculation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("rateTable")]
        public virtual string RateTable { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Building block of the cost calculation decision tree. - The tree root should have no condition and no
    /// calculation method. - All the children must have a condition on the same dimension. The first child matching a
    /// condition is entered, therefore, price and weight conditions form contiguous intervals. - The last child of an
    /// element must have no condition and matches all elements not previously matched. - Children and calculation
    /// method are mutually exclusive, and exactly one of them must be defined; the root must only have
    /// children.</summary>
    public class AccountShippingShippingServiceCostRule : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Final calculation method to be used only in leaf nodes.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("calculationMethod")]
        public virtual AccountShippingShippingServiceCalculationMethod CalculationMethod { get; set; } 

        /// <summary>Subsequent rules to be applied, only for inner nodes. The last child must not specify a condition
        /// and acts as a catch-all.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("children")]
        public virtual System.Collections.Generic.IList<AccountShippingShippingServiceCostRule> Children { get; set; } 

        /// <summary>Condition for this rule to be applicable. If no condition is specified, the rule acts as a catch-
        /// all.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("condition")]
        public virtual AccountShippingCondition Condition { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The status of an account, i.e., information about its products, which is computed offline and not
    /// returned immediately at insertion time.</summary>
    public class AccountStatus : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the account for which the status is reported.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountId")]
        public virtual string AccountId { get; set; } 

        /// <summary>A list of data quality issues.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("dataQualityIssues")]
        public virtual System.Collections.Generic.IList<AccountStatusDataQualityIssue> DataQualityIssues { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accountStatus".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountStatusDataQualityIssue : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Country for which this issue is reported.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("country")]
        public virtual string Country { get; set; } 

        /// <summary>A more detailed description of the issue.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("detail")]
        public virtual string Detail { get; set; } 

        /// <summary>Actual value displayed on the landing page.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayedValue")]
        public virtual string DisplayedValue { get; set; } 

        /// <summary>Example items featuring the issue.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("exampleItems")]
        public virtual System.Collections.Generic.IList<AccountStatusExampleItem> ExampleItems { get; set; } 

        /// <summary>Issue identifier.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>Last time the account was checked for this issue.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastChecked")]
        public virtual string LastChecked { get; set; } 

        /// <summary>The attribute name that is relevant for the issue.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("location")]
        public virtual string Location { get; set; } 

        /// <summary>Number of items in the account found to have the said issue.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("numItems")]
        public virtual System.Nullable<long> NumItems { get; set; } 

        /// <summary>Severity of the problem.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("severity")]
        public virtual string Severity { get; set; } 

        /// <summary>Submitted value that causes the issue.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("submittedValue")]
        public virtual string SubmittedValue { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An example of an item that has poor data quality. An item value on the landing page differs from what
    /// is submitted, or conflicts with a policy.</summary>
    public class AccountStatusExampleItem : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Unique item ID as specified in the uploaded product data.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("itemId")]
        public virtual string ItemId { get; set; } 

        /// <summary>Landing page of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("link")]
        public virtual string Link { get; set; } 

        /// <summary>The item value that was submitted.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("submittedValue")]
        public virtual string SubmittedValue { get; set; } 

        /// <summary>Title of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("title")]
        public virtual string Title { get; set; } 

        /// <summary>The actual value on the landing page.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("valueOnLandingPage")]
        public virtual string ValueOnLandingPage { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The tax settings of a merchant account.</summary>
    public class AccountTax : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the account to which these account tax settings belong.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountId")]
        public virtual System.Nullable<ulong> AccountId { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string "content#accountTax".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>Tax rules. Updating the tax rules will enable US taxes (not reversible). Defining no rules is
        /// equivalent to not charging tax at all.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("rules")]
        public virtual System.Collections.Generic.IList<AccountTaxTaxRule> Rules { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Tax calculation rule to apply in a state or province (USA only).</summary>
    public class AccountTaxTaxRule : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Country code in which tax is applicable.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("country")]
        public virtual string Country { get; set; } 

        /// <summary>State (or province) is which the tax is applicable, described by its location id (also called
        /// criteria id).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("locationId")]
        public virtual System.Nullable<ulong> LocationId { get; set; } 

        /// <summary>Explicit tax rate in percent, represented as a floating point number without the percentage
        /// character. Must not be negative.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("ratePercent")]
        public virtual string RatePercent { get; set; } 

        /// <summary>If true, shipping charges are also taxed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingTaxed")]
        public virtual System.Nullable<bool> ShippingTaxed { get; set; } 

        /// <summary>Whether the tax rate is taken from a global tax table or specified explicitly.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("useGlobalRate")]
        public virtual System.Nullable<bool> UseGlobalRate { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountUser : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Whether user is an admin.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("admin")]
        public virtual System.Nullable<bool> Admin { get; set; } 

        /// <summary>User's email address.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("emailAddress")]
        public virtual string EmailAddress { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountsAuthInfoResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The account identifiers corresponding to the authenticated user. - For an individual account: only
        /// the merchant ID is defined - For an aggregator: only the aggregator ID is defined - For a subaccount of an
        /// MCA: both the merchant ID and the aggregator ID are defined.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountIdentifiers")]
        public virtual System.Collections.Generic.IList<AccountIdentifier> AccountIdentifiers { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accountsAuthInfoResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountsCustomBatchRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The request entries to be processed in the batch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<AccountsCustomBatchRequestEntry> Entries { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch accounts request.</summary>
    public class AccountsCustomBatchRequestEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The account to create or update. Only defined if the method is insert or update.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("account")]
        public virtual Account Account { get; set; } 

        /// <summary>The ID of the account to get or delete. Only defined if the method is get or delete.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountId")]
        public virtual System.Nullable<ulong> AccountId { get; set; } 

        /// <summary>An entry ID, unique within the batch request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>The ID of the managing account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantId")]
        public virtual System.Nullable<ulong> MerchantId { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountsCustomBatchResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The result of the execution of the batch requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<AccountsCustomBatchResponseEntry> Entries { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accountsCustomBatchResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch accounts response.</summary>
    public class AccountsCustomBatchResponseEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The retrieved, created, or updated account. Not defined if the method was delete.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("account")]
        public virtual Account Account { get; set; } 

        /// <summary>The ID of the request entry this entry responds to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>A list of errors defined if and only if the request failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual Errors Errors { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accountsCustomBatchResponseEntry".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountsListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accountsListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The token for the retrieval of the next page of accounts.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<Account> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountshippingCustomBatchRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The request entries to be processed in the batch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<AccountshippingCustomBatchRequestEntry> Entries { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch accountshipping request.</summary>
    public class AccountshippingCustomBatchRequestEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the account for which to get/update account shipping settings.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountId")]
        public virtual System.Nullable<ulong> AccountId { get; set; } 

        /// <summary>The account shipping settings to update. Only defined if the method is update.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountShipping")]
        public virtual AccountShipping AccountShipping { get; set; } 

        /// <summary>An entry ID, unique within the batch request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>The ID of the managing account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantId")]
        public virtual System.Nullable<ulong> MerchantId { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountshippingCustomBatchResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The result of the execution of the batch requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<AccountshippingCustomBatchResponseEntry> Entries { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accountshippingCustomBatchResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch accountshipping response.</summary>
    public class AccountshippingCustomBatchResponseEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The retrieved or updated account shipping settings.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountShipping")]
        public virtual AccountShipping AccountShipping { get; set; } 

        /// <summary>The ID of the request entry this entry responds to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>A list of errors defined if and only if the request failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual Errors Errors { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accountshippingCustomBatchResponseEntry".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountshippingListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accountshippingListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The token for the retrieval of the next page of account shipping settings.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<AccountShipping> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountstatusesCustomBatchRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The request entries to be processed in the batch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<AccountstatusesCustomBatchRequestEntry> Entries { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch accountstatuses request.</summary>
    public class AccountstatusesCustomBatchRequestEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the (sub-)account whose status to get.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountId")]
        public virtual System.Nullable<ulong> AccountId { get; set; } 

        /// <summary>An entry ID, unique within the batch request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>The ID of the managing account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantId")]
        public virtual System.Nullable<ulong> MerchantId { get; set; } 

        /// <summary>The method (get).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountstatusesCustomBatchResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The result of the execution of the batch requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<AccountstatusesCustomBatchResponseEntry> Entries { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accountstatusesCustomBatchResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch accountstatuses response.</summary>
    public class AccountstatusesCustomBatchResponseEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The requested account status. Defined if and only if the request was successful.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountStatus")]
        public virtual AccountStatus AccountStatus { get; set; } 

        /// <summary>The ID of the request entry this entry responds to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>A list of errors defined if and only if the request failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual Errors Errors { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccountstatusesListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accountstatusesListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The token for the retrieval of the next page of account statuses.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<AccountStatus> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccounttaxCustomBatchRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The request entries to be processed in the batch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<AccounttaxCustomBatchRequestEntry> Entries { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch accounttax request.</summary>
    public class AccounttaxCustomBatchRequestEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the account for which to get/update account tax settings.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountId")]
        public virtual System.Nullable<ulong> AccountId { get; set; } 

        /// <summary>The account tax settings to update. Only defined if the method is update.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountTax")]
        public virtual AccountTax AccountTax { get; set; } 

        /// <summary>An entry ID, unique within the batch request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>The ID of the managing account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantId")]
        public virtual System.Nullable<ulong> MerchantId { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccounttaxCustomBatchResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The result of the execution of the batch requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<AccounttaxCustomBatchResponseEntry> Entries { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accounttaxCustomBatchResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch accounttax response.</summary>
    public class AccounttaxCustomBatchResponseEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The retrieved or updated account tax settings.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountTax")]
        public virtual AccountTax AccountTax { get; set; } 

        /// <summary>The ID of the request entry this entry responds to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>A list of errors defined if and only if the request failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual Errors Errors { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accounttaxCustomBatchResponseEntry".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AccounttaxListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#accounttaxListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The token for the retrieval of the next page of account tax settings.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<AccountTax> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class CarrierRate : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Carrier service, such as "UPS" or "Fedex". The list of supported carriers can be retrieved via the
        /// getSupportedCarriers method. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrierName")]
        public virtual string CarrierName { get; set; } 

        /// <summary>Carrier service, such as "ground" or "2 days". The list of supported services for a carrier can be
        /// retrieved via the getSupportedCarriers method. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrierService")]
        public virtual string CarrierService { get; set; } 

        /// <summary>Additive shipping rate modifier. Can be negative. For example { "value": "1", "currency" : "USD" }
        /// adds $1 to the rate, { "value": "-3", "currency" : "USD" } removes $3 from the rate. Optional.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("flatAdjustment")]
        public virtual Price FlatAdjustment { get; set; } 

        /// <summary>Name of the carrier rate. Must be unique per rate group. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Shipping origin for this carrier rate. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("originPostalCode")]
        public virtual string OriginPostalCode { get; set; } 

        /// <summary>Multiplicative shipping rate modifier as a number in decimal notation. Can be negative. For example
        /// "5.4" increases the rate by 5.4%, "-3" decreases the rate by 3%. Optional.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("percentageAdjustment")]
        public virtual string PercentageAdjustment { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class CarriersCarrier : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The CLDR country code of the carrier (e.g., "US"). Always present.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("country")]
        public virtual string Country { get; set; } 

        /// <summary>The name of the carrier (e.g., "UPS"). Always present.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>A list of supported services (e.g., "ground") for that carrier. Contains at least one
        /// service.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("services")]
        public virtual System.Collections.Generic.IList<string> Services { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Datafeed data.</summary>
    public class Datafeed : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The two-letter ISO 639-1 language in which the attributes are defined in the data feed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("attributeLanguage")]
        public virtual string AttributeLanguage { get; set; } 

        /// <summary>The two-letter ISO 639-1 language of the items in the feed. Must be a valid language for
        /// targetCountry.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("contentLanguage")]
        public virtual string ContentLanguage { get; set; } 

        /// <summary>The type of data feed. For product inventory feeds, only feeds for local stores, not online stores,
        /// are supported.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("contentType")]
        public virtual string ContentType { get; set; } 

        /// <summary>Fetch schedule for the feed file.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fetchSchedule")]
        public virtual DatafeedFetchSchedule FetchSchedule { get; set; } 

        /// <summary>The filename of the feed. All feeds must have a unique file name.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fileName")]
        public virtual string FileName { get; set; } 

        /// <summary>Format of the feed file.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("format")]
        public virtual DatafeedFormat Format { get; set; } 

        /// <summary>The ID of the data feed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual System.Nullable<long> Id { get; set; } 

        /// <summary>The list of intended destinations (corresponds to checked check boxes in Merchant
        /// Center).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("intendedDestinations")]
        public virtual System.Collections.Generic.IList<string> IntendedDestinations { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string "content#datafeed".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>A descriptive name of the data feed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The country where the items in the feed will be included in the search index, represented as a CLDR
        /// territory code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetCountry")]
        public virtual string TargetCountry { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The required fields vary based on the frequency of fetching. For a monthly fetch schedule, day_of_month
    /// and hour are required. For a weekly fetch schedule, weekday and hour are required. For a daily fetch schedule,
    /// only hour is required.</summary>
    public class DatafeedFetchSchedule : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The day of the month the feed file should be fetched (1-31).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("dayOfMonth")]
        public virtual System.Nullable<long> DayOfMonth { get; set; } 

        /// <summary>The URL where the feed file can be fetched. Google Merchant Center will support automatic scheduled
        /// uploads using the HTTP, HTTPS, FTP, or SFTP protocols, so the value will need to be a valid link using one
        /// of those four protocols.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fetchUrl")]
        public virtual string FetchUrl { get; set; } 

        /// <summary>The hour of the day the feed file should be fetched (0-23).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("hour")]
        public virtual System.Nullable<long> Hour { get; set; } 

        /// <summary>The minute of the hour the feed file should be fetched (0-59). Read-only.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("minuteOfHour")]
        public virtual System.Nullable<long> MinuteOfHour { get; set; } 

        /// <summary>An optional password for fetch_url.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("password")]
        public virtual string Password { get; set; } 

        /// <summary>Time zone used for schedule. UTC by default. E.g., "America/Los_Angeles".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("timeZone")]
        public virtual string TimeZone { get; set; } 

        /// <summary>An optional user name for fetch_url.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("username")]
        public virtual string Username { get; set; } 

        /// <summary>The day of the week the feed file should be fetched.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("weekday")]
        public virtual string Weekday { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class DatafeedFormat : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Delimiter for the separation of values in a delimiter-separated values feed. If not specified, the
        /// delimiter will be auto-detected. Ignored for non-DSV data feeds.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("columnDelimiter")]
        public virtual string ColumnDelimiter { get; set; } 

        /// <summary>Character encoding scheme of the data feed. If not specified, the encoding will be auto-
        /// detected.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fileEncoding")]
        public virtual string FileEncoding { get; set; } 

        /// <summary>Specifies how double quotes are interpreted. If not specified, the mode will be auto-detected.
        /// Ignored for non-DSV data feeds.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quotingMode")]
        public virtual string QuotingMode { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The status of a datafeed, i.e., the result of the last retrieval of the datafeed computed
    /// asynchronously when the feed processing is finished.</summary>
    public class DatafeedStatus : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the feed for which the status is reported.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("datafeedId")]
        public virtual System.Nullable<ulong> DatafeedId { get; set; } 

        /// <summary>The list of errors occurring in the feed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual System.Collections.Generic.IList<DatafeedStatusError> Errors { get; set; } 

        /// <summary>The number of items in the feed that were processed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("itemsTotal")]
        public virtual System.Nullable<ulong> ItemsTotal { get; set; } 

        /// <summary>The number of items in the feed that were valid.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("itemsValid")]
        public virtual System.Nullable<ulong> ItemsValid { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#datafeedStatus".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The last date at which the feed was uploaded.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastUploadDate")]
        public virtual string LastUploadDate { get; set; } 

        /// <summary>The processing status of the feed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("processingStatus")]
        public virtual string ProcessingStatus { get; set; } 

        /// <summary>The list of errors occurring in the feed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("warnings")]
        public virtual System.Collections.Generic.IList<DatafeedStatusError> Warnings { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An error occurring in the feed, like "invalid price".</summary>
    public class DatafeedStatusError : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The code of the error, e.g., "validation/invalid_value".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("code")]
        public virtual string Code { get; set; } 

        /// <summary>The number of occurrences of the error in the feed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("count")]
        public virtual System.Nullable<ulong> Count { get; set; } 

        /// <summary>A list of example occurrences of the error, grouped by product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("examples")]
        public virtual System.Collections.Generic.IList<DatafeedStatusExample> Examples { get; set; } 

        /// <summary>The error message, e.g., "Invalid price".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("message")]
        public virtual string Message { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An example occurrence for a particular error.</summary>
    public class DatafeedStatusExample : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the example item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("itemId")]
        public virtual string ItemId { get; set; } 

        /// <summary>Line number in the data feed where the example is found.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lineNumber")]
        public virtual System.Nullable<ulong> LineNumber { get; set; } 

        /// <summary>The problematic value.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual string Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class DatafeedsCustomBatchRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The request entries to be processed in the batch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<DatafeedsCustomBatchRequestEntry> Entries { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch datafeeds request.</summary>
    public class DatafeedsCustomBatchRequestEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>An entry ID, unique within the batch request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>The data feed to insert.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("datafeed")]
        public virtual Datafeed Datafeed { get; set; } 

        /// <summary>The ID of the data feed to get or delete.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("datafeedId")]
        public virtual System.Nullable<ulong> DatafeedId { get; set; } 

        /// <summary>The ID of the managing account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantId")]
        public virtual System.Nullable<ulong> MerchantId { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class DatafeedsCustomBatchResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The result of the execution of the batch requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<DatafeedsCustomBatchResponseEntry> Entries { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#datafeedsCustomBatchResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch datafeeds response.</summary>
    public class DatafeedsCustomBatchResponseEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the request entry this entry responds to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>The requested data feed. Defined if and only if the request was successful.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("datafeed")]
        public virtual Datafeed Datafeed { get; set; } 

        /// <summary>A list of errors defined if and only if the request failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual Errors Errors { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class DatafeedsListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#datafeedsListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The token for the retrieval of the next page of datafeeds.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<Datafeed> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class DatafeedstatusesCustomBatchRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The request entries to be processed in the batch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<DatafeedstatusesCustomBatchRequestEntry> Entries { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch datafeedstatuses request.</summary>
    public class DatafeedstatusesCustomBatchRequestEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>An entry ID, unique within the batch request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>The ID of the data feed to get or delete.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("datafeedId")]
        public virtual System.Nullable<ulong> DatafeedId { get; set; } 

        /// <summary>The ID of the managing account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantId")]
        public virtual System.Nullable<ulong> MerchantId { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class DatafeedstatusesCustomBatchResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The result of the execution of the batch requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<DatafeedstatusesCustomBatchResponseEntry> Entries { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#datafeedstatusesCustomBatchResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch datafeedstatuses response.</summary>
    public class DatafeedstatusesCustomBatchResponseEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the request entry this entry responds to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>The requested data feed status. Defined if and only if the request was successful.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("datafeedStatus")]
        public virtual DatafeedStatus DatafeedStatus { get; set; } 

        /// <summary>A list of errors defined if and only if the request failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual Errors Errors { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class DatafeedstatusesListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#datafeedstatusesListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The token for the retrieval of the next page of datafeed statuses.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<DatafeedStatus> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class DeliveryTime : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Maximum number of business days that is spent in transit. 0 means same day delivery, 1 means next
        /// day delivery. Must be greater than or equal to minTransitTimeInDays. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("maxTransitTimeInDays")]
        public virtual System.Nullable<long> MaxTransitTimeInDays { get; set; } 

        /// <summary>Minimum number of business days that is spent in transit. 0 means same day delivery, 1 means next
        /// day delivery. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("minTransitTimeInDays")]
        public virtual System.Nullable<long> MinTransitTimeInDays { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An error returned by the API.</summary>
    public class Error : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The domain of the error.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("domain")]
        public virtual string Domain { get; set; } 

        /// <summary>A description of the error.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("message")]
        public virtual string Message { get; set; } 

        /// <summary>The error code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reason")]
        public virtual string Reason { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A list of errors returned by a failed batch entry.</summary>
    public class Errors : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The HTTP status of the first error in errors.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("code")]
        public virtual System.Nullable<long> Code { get; set; } 

        /// <summary>A list of errors.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual System.Collections.Generic.IList<Error> ErrorsValue { get; set; } 

        /// <summary>The message of the first error in errors.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("message")]
        public virtual string Message { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A non-empty list of row or column headers for a table. Exactly one of prices, weights, numItems,
    /// postalCodeGroupNames, or locations must be set.</summary>
    public class Headers : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A list of location ID sets. Must be non-empty. Can only be set if all other fields are not
        /// set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("locations")]
        public virtual System.Collections.Generic.IList<LocationIdSet> Locations { get; set; } 

        /// <summary>A list of inclusive number of items upper bounds. The last value can be "infinity". For example
        /// ["10", "50", "infinity"] represents the headers "<= 10 items", " 50 items". Must be non-empty. Can only be
        /// set if all other fields are not set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("numberOfItems")]
        public virtual System.Collections.Generic.IList<string> NumberOfItems { get; set; } 

        /// <summary>A list of postal group names. The last value can be "all other locations". Example: ["zone 1",
        /// "zone 2", "all other locations"]. The referred postal code groups must match the delivery country of the
        /// service. Must be non-empty. Can only be set if all other fields are not set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("postalCodeGroupNames")]
        public virtual System.Collections.Generic.IList<string> PostalCodeGroupNames { get; set; } 

        /// <summary>be "infinity". For example [{"value": "10", "currency": "USD"}, {"value": "500", "currency":
        /// "USD"}, {"value": "infinity", "currency": "USD"}] represents the headers "<= $10", " $500". All prices
        /// within a service must have the same currency. Must be non-empty. Can only be set if all other fields are not
        /// set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("prices")]
        public virtual System.Collections.Generic.IList<Price> Prices { get; set; } 

        /// <summary>be "infinity". For example [{"value": "10", "unit": "kg"}, {"value": "50", "unit": "kg"}, {"value":
        /// "infinity", "unit": "kg"}] represents the headers "<= 10kg", " 50kg". All weights within a service must have
        /// the same unit. Must be non-empty. Can only be set if all other fields are not set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("weights")]
        public virtual System.Collections.Generic.IList<Weight> Weights { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Installment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The amount the buyer has to pay per month.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("amount")]
        public virtual Price Amount { get; set; } 

        /// <summary>The number of installments the buyer has to pay.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("months")]
        public virtual System.Nullable<long> Months { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Inventory : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The availability of the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("availability")]
        public virtual string Availability { get; set; } 

        /// <summary>Number and amount of installments to pay for an item. Brazil only.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("installment")]
        public virtual Installment Installment { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string "content#inventory".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>Loyalty points that users receive after purchasing the item. Japan only.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("loyaltyPoints")]
        public virtual LoyaltyPoints LoyaltyPoints { get; set; } 

        /// <summary>Store pickup information. Only supported for local inventory. Not setting pickup means "don't
        /// update" while setting it to the empty value ({} in JSON) means "delete". Otherwise, pickupMethod and
        /// pickupSla must be set together, unless pickupMethod is "not supported".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pickup")]
        public virtual InventoryPickup Pickup { get; set; } 

        /// <summary>The price of the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("price")]
        public virtual Price Price { get; set; } 

        /// <summary>The quantity of the product. Must be equal to or greater than zero. Supported only for local
        /// products.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantity")]
        public virtual System.Nullable<long> Quantity { get; set; } 

        /// <summary>The sale price of the product. Mandatory if sale_price_effective_date is defined.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("salePrice")]
        public virtual Price SalePrice { get; set; } 

        /// <summary>A date range represented by a pair of ISO 8601 dates separated by a space, comma, or slash. Both
        /// dates might be specified as 'null' if undecided.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("salePriceEffectiveDate")]
        public virtual string SalePriceEffectiveDate { get; set; } 

        /// <summary>The quantity of the product that is reserved for sell-on-google ads. Supported only for online
        /// products.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sellOnGoogleQuantity")]
        public virtual System.Nullable<long> SellOnGoogleQuantity { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InventoryCustomBatchRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The request entries to be processed in the batch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<InventoryCustomBatchRequestEntry> Entries { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch inventory request.</summary>
    public class InventoryCustomBatchRequestEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>An entry ID, unique within the batch request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>Price and availability of the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("inventory")]
        public virtual Inventory Inventory { get; set; } 

        /// <summary>The ID of the managing account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantId")]
        public virtual System.Nullable<ulong> MerchantId { get; set; } 

        /// <summary>The ID of the product for which to update price and availability.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("productId")]
        public virtual string ProductId { get; set; } 

        /// <summary>The code of the store for which to update price and availability. Use online to update price and
        /// availability of an online product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("storeCode")]
        public virtual string StoreCode { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InventoryCustomBatchResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The result of the execution of the batch requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<InventoryCustomBatchResponseEntry> Entries { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#inventoryCustomBatchResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch inventory response.</summary>
    public class InventoryCustomBatchResponseEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the request entry this entry responds to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>A list of errors defined if and only if the request failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual Errors Errors { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#inventoryCustomBatchResponseEntry".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InventoryPickup : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Whether store pickup is available for this offer and whether the pickup option should be shown as
        /// buy, reserve, or not supported. Only supported for local inventory. Unless the value is "not supported",
        /// must be submitted together with pickupSla.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pickupMethod")]
        public virtual string PickupMethod { get; set; } 

        /// <summary>The expected date that an order will be ready for pickup, relative to when the order is placed.
        /// Only supported for local inventory. Must be submitted together with pickupMethod.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pickupSla")]
        public virtual string PickupSla { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InventorySetRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The availability of the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("availability")]
        public virtual string Availability { get; set; } 

        /// <summary>Number and amount of installments to pay for an item. Brazil only.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("installment")]
        public virtual Installment Installment { get; set; } 

        /// <summary>Loyalty points that users receive after purchasing the item. Japan only.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("loyaltyPoints")]
        public virtual LoyaltyPoints LoyaltyPoints { get; set; } 

        /// <summary>Store pickup information. Only supported for local inventory. Not setting pickup means "don't
        /// update" while setting it to the empty value ({} in JSON) means "delete". Otherwise, pickupMethod and
        /// pickupSla must be set together, unless pickupMethod is "not supported".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pickup")]
        public virtual InventoryPickup Pickup { get; set; } 

        /// <summary>The price of the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("price")]
        public virtual Price Price { get; set; } 

        /// <summary>The quantity of the product. Must be equal to or greater than zero. Supported only for local
        /// products.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantity")]
        public virtual System.Nullable<long> Quantity { get; set; } 

        /// <summary>The sale price of the product. Mandatory if sale_price_effective_date is defined.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("salePrice")]
        public virtual Price SalePrice { get; set; } 

        /// <summary>A date range represented by a pair of ISO 8601 dates separated by a space, comma, or slash. Both
        /// dates might be specified as 'null' if undecided.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("salePriceEffectiveDate")]
        public virtual string SalePriceEffectiveDate { get; set; } 

        /// <summary>The quantity of the product that is reserved for sell-on-google ads. Supported only for online
        /// products.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sellOnGoogleQuantity")]
        public virtual System.Nullable<long> SellOnGoogleQuantity { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InventorySetResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#inventorySetResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class LocationIdSet : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A non-empty list of location IDs. They must all be of the same location type (e.g.,
        /// state).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("locationIds")]
        public virtual System.Collections.Generic.IList<string> LocationIds { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class LoyaltyPoints : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Name of loyalty points program. It is recommended to limit the name to 12 full-width characters or
        /// 24 Roman characters.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The retailer's loyalty points in absolute value.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pointsValue")]
        public virtual System.Nullable<long> PointsValue { get; set; } 

        /// <summary>The ratio of a point when converted to currency. Google assumes currency based on Merchant Center
        /// settings. If ratio is left out, it defaults to 1.0.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("ratio")]
        public virtual System.Nullable<double> Ratio { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Order : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Whether the order was acknowledged.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("acknowledged")]
        public virtual System.Nullable<bool> Acknowledged { get; set; } 

        /// <summary>The channel type of the order: "purchaseOnGoogle" or "googleExpress".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("channelType")]
        public virtual string ChannelType { get; set; } 

        /// <summary>The details of the customer who placed the order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("customer")]
        public virtual OrderCustomer Customer { get; set; } 

        /// <summary>The details for the delivery.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deliveryDetails")]
        public virtual OrderDeliveryDetails DeliveryDetails { get; set; } 

        /// <summary>The REST id of the order. Globally unique.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string "content#order".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>Line items that are ordered.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lineItems")]
        public virtual System.Collections.Generic.IList<OrderLineItem> LineItems { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("merchantId")]
        public virtual System.Nullable<ulong> MerchantId { get; set; } 

        /// <summary>Merchant-provided id of the order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantOrderId")]
        public virtual string MerchantOrderId { get; set; } 

        /// <summary>The net amount for the order. For example, if an order was originally for a grand total of $100 and
        /// a refund was issued for $20, the net amount will be $80.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("netAmount")]
        public virtual Price NetAmount { get; set; } 

        /// <summary>The details of the payment method.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("paymentMethod")]
        public virtual OrderPaymentMethod PaymentMethod { get; set; } 

        /// <summary>The status of the payment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("paymentStatus")]
        public virtual string PaymentStatus { get; set; } 

        /// <summary>The date when the order was placed, in ISO 8601 format.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("placedDate")]
        public virtual string PlacedDate { get; set; } 

        /// <summary>The details of the merchant provided promotions applied to the order. More details about the
        /// program are  here.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("promotions")]
        public virtual System.Collections.Generic.IList<OrderPromotion> Promotions { get; set; } 

        /// <summary>Refunds for the order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("refunds")]
        public virtual System.Collections.Generic.IList<OrderRefund> Refunds { get; set; } 

        /// <summary>Shipments of the order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shipments")]
        public virtual System.Collections.Generic.IList<OrderShipment> Shipments { get; set; } 

        /// <summary>The total cost of shipping for all items.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingCost")]
        public virtual Price ShippingCost { get; set; } 

        /// <summary>The tax for the total shipping cost.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingCostTax")]
        public virtual Price ShippingCostTax { get; set; } 

        /// <summary>The requested shipping option.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingOption")]
        public virtual string ShippingOption { get; set; } 

        /// <summary>The status of the order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("status")]
        public virtual string Status { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderAddress : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>CLDR country code (e.g. "US").</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("country")]
        public virtual string Country { get; set; } 

        /// <summary>Strings representing the lines of the printed label for mailing the order, for example: John Smith
        /// 1600 Amphitheatre Parkway Mountain View, CA, 94043 United States</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fullAddress")]
        public virtual System.Collections.Generic.IList<string> FullAddress { get; set; } 

        /// <summary>Whether the address is a post office box.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("isPostOfficeBox")]
        public virtual System.Nullable<bool> IsPostOfficeBox { get; set; } 

        /// <summary>City, town or commune. May also include dependent localities or sublocalities (e.g. neighborhoods
        /// or suburbs).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("locality")]
        public virtual string Locality { get; set; } 

        /// <summary>Postal Code or ZIP (e.g. "94043").</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("postalCode")]
        public virtual string PostalCode { get; set; } 

        /// <summary>Name of the recipient.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("recipientName")]
        public virtual string RecipientName { get; set; } 

        /// <summary>Top-level administrative subdivision of the country (e.g. "CA").</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("region")]
        public virtual string Region { get; set; } 

        /// <summary>Street-level part of the address.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("streetAddress")]
        public virtual System.Collections.Generic.IList<string> StreetAddress { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderCancellation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The actor that created the cancellation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("actor")]
        public virtual string Actor { get; set; } 

        /// <summary>Date on which the cancellation has been created, in ISO 8601 format.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("creationDate")]
        public virtual string CreationDate { get; set; } 

        /// <summary>The quantity that was canceled.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantity")]
        public virtual System.Nullable<long> Quantity { get; set; } 

        /// <summary>The reason for the cancellation. Orders that are cancelled with a noInventory reason will lead to
        /// the removal of the product from POG until you make an update to that product. This will not affect your
        /// Shopping ads.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reason")]
        public virtual string Reason { get; set; } 

        /// <summary>The explanation of the reason.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reasonText")]
        public virtual string ReasonText { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderCustomer : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Email address of the customer.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to
        /// the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was
        /// thus not shown the marketing right opt in/out checkbox during the checkout flow.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("explicitMarketingPreference")]
        public virtual System.Nullable<bool> ExplicitMarketingPreference { get; set; } 

        /// <summary>Full name of the customer.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fullName")]
        public virtual string FullName { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderDeliveryDetails : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The delivery address</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("address")]
        public virtual OrderAddress Address { get; set; } 

        /// <summary>The phone number of the person receiving the delivery.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("phoneNumber")]
        public virtual string PhoneNumber { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderLineItem : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Cancellations of the line item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("cancellations")]
        public virtual System.Collections.Generic.IList<OrderCancellation> Cancellations { get; set; } 

        /// <summary>The id of the line item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>Total price for the line item. For example, if two items for $10 are purchased, the total price
        /// will be $20.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("price")]
        public virtual Price Price { get; set; } 

        /// <summary>Product data from the time of the order placement.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("product")]
        public virtual OrderLineItemProduct Product { get; set; } 

        /// <summary>Number of items canceled.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantityCanceled")]
        public virtual System.Nullable<long> QuantityCanceled { get; set; } 

        /// <summary>Number of items delivered.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantityDelivered")]
        public virtual System.Nullable<long> QuantityDelivered { get; set; } 

        /// <summary>Number of items ordered.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantityOrdered")]
        public virtual System.Nullable<long> QuantityOrdered { get; set; } 

        /// <summary>Number of items pending.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantityPending")]
        public virtual System.Nullable<long> QuantityPending { get; set; } 

        /// <summary>Number of items returned.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantityReturned")]
        public virtual System.Nullable<long> QuantityReturned { get; set; } 

        /// <summary>Number of items shipped.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantityShipped")]
        public virtual System.Nullable<long> QuantityShipped { get; set; } 

        /// <summary>Details of the return policy for the line item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("returnInfo")]
        public virtual OrderLineItemReturnInfo ReturnInfo { get; set; } 

        /// <summary>Returns of the line item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("returns")]
        public virtual System.Collections.Generic.IList<OrderReturn> Returns { get; set; } 

        /// <summary>Details of the requested shipping for the line item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingDetails")]
        public virtual OrderLineItemShippingDetails ShippingDetails { get; set; } 

        /// <summary>Total tax amount for the line item. For example, if two items are purchased, and each have a cost
        /// tax of $2, the total tax amount will be $4.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("tax")]
        public virtual Price Tax { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderLineItemProduct : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Brand of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("brand")]
        public virtual string Brand { get; set; } 

        /// <summary>The item's channel (online or local).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("channel")]
        public virtual string Channel { get; set; } 

        /// <summary>Condition or state of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("condition")]
        public virtual string Condition { get; set; } 

        /// <summary>The two-letter ISO 639-1 language code for the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("contentLanguage")]
        public virtual string ContentLanguage { get; set; } 

        /// <summary>Global Trade Item Number (GTIN) of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("gtin")]
        public virtual string Gtin { get; set; } 

        /// <summary>The REST id of the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>URL of an image of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("imageLink")]
        public virtual string ImageLink { get; set; } 

        /// <summary>Shared identifier for all variants of the same product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("itemGroupId")]
        public virtual string ItemGroupId { get; set; } 

        /// <summary>Manufacturer Part Number (MPN) of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("mpn")]
        public virtual string Mpn { get; set; } 

        /// <summary>An identifier of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("offerId")]
        public virtual string OfferId { get; set; } 

        /// <summary>Price of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("price")]
        public virtual Price Price { get; set; } 

        /// <summary>URL to the cached image shown to the user when order was placed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shownImage")]
        public virtual string ShownImage { get; set; } 

        /// <summary>The CLDR territory code of the target country of the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetCountry")]
        public virtual string TargetCountry { get; set; } 

        /// <summary>The title of the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("title")]
        public virtual string Title { get; set; } 

        /// <summary>Variant attributes for the item. These are dimensions of the product, such as color, gender,
        /// material, pattern, and size. You can find a comprehensive list of variant attributes here.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("variantAttributes")]
        public virtual System.Collections.Generic.IList<OrderLineItemProductVariantAttribute> VariantAttributes { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderLineItemProductVariantAttribute : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The dimension of the variant.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("dimension")]
        public virtual string Dimension { get; set; } 

        /// <summary>The value for the dimension.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual string Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderLineItemReturnInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>How many days later the item can be returned.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("daysToReturn")]
        public virtual System.Nullable<int> DaysToReturn { get; set; } 

        /// <summary>Whether the item is returnable.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("isReturnable")]
        public virtual System.Nullable<bool> IsReturnable { get; set; } 

        /// <summary>URL of the item return policy.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("policyUrl")]
        public virtual string PolicyUrl { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderLineItemShippingDetails : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The delivery by date, in ISO 8601 format.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deliverByDate")]
        public virtual string DeliverByDate { get; set; } 

        /// <summary>Details of the shipping method.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual OrderLineItemShippingDetailsMethod Method { get; set; } 

        /// <summary>The ship by date, in ISO 8601 format.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shipByDate")]
        public virtual string ShipByDate { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderLineItemShippingDetailsMethod : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The carrier for the shipping. Optional.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrier")]
        public virtual string Carrier { get; set; } 

        /// <summary>Maximum transit time.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("maxDaysInTransit")]
        public virtual System.Nullable<long> MaxDaysInTransit { get; set; } 

        /// <summary>The name of the shipping method.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("methodName")]
        public virtual string MethodName { get; set; } 

        /// <summary>Minimum transit time.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("minDaysInTransit")]
        public virtual System.Nullable<long> MinDaysInTransit { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderPaymentMethod : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The billing address.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("billingAddress")]
        public virtual OrderAddress BillingAddress { get; set; } 

        /// <summary>The card expiration month (January = 1, February = 2 etc.).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expirationMonth")]
        public virtual System.Nullable<int> ExpirationMonth { get; set; } 

        /// <summary>The card expiration year (4-digit, e.g. 2015).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expirationYear")]
        public virtual System.Nullable<int> ExpirationYear { get; set; } 

        /// <summary>The last four digits of the card number.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastFourDigits")]
        public virtual string LastFourDigits { get; set; } 

        /// <summary>The billing phone number.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("phoneNumber")]
        public virtual string PhoneNumber { get; set; } 

        /// <summary>The type of instrument (VISA, Mastercard, etc).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("type")]
        public virtual string Type { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderPromotion : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("benefits")]
        public virtual System.Collections.Generic.IList<OrderPromotionBenefit> Benefits { get; set; } 

        /// <summary>The date and time frame when the promotion is active and ready for validation review. Note that the
        /// promotion live time may be delayed for a few hours due to the validation review. Start date and end date are
        /// separated by a forward slash (/). The start date is specified by the format (YYYY-MM-DD), followed by the
        /// letter ?T?, the time of the day when the sale starts (in Greenwich Mean Time, GMT), followed by an
        /// expression of the time zone for the sale. The end date is in the same format.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("effectiveDates")]
        public virtual string EffectiveDates { get; set; } 

        /// <summary>Optional. The text code that corresponds to the promotion when applied on the retailer?s
        /// website.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("genericRedemptionCode")]
        public virtual string GenericRedemptionCode { get; set; } 

        /// <summary>The unique ID of the promotion.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>The full title of the promotion.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("longTitle")]
        public virtual string LongTitle { get; set; } 

        /// <summary>Whether the promotion is applicable to all products or only specific products.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("productApplicability")]
        public virtual string ProductApplicability { get; set; } 

        /// <summary>Indicates that the promotion is valid online.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("redemptionChannel")]
        public virtual string RedemptionChannel { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderPromotionBenefit : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The discount in the order price when the promotion is applied.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("discount")]
        public virtual Price Discount { get; set; } 

        /// <summary>The OfferId(s) that were purchased in this order and map to this specific benefit of the
        /// promotion.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("offerIds")]
        public virtual System.Collections.Generic.IList<string> OfferIds { get; set; } 

        /// <summary>Further describes the benefit of the promotion. Note that we will expand on this enumeration as we
        /// support new promotion sub-types.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("subType")]
        public virtual string SubType { get; set; } 

        /// <summary>The impact on tax when the promotion is applied.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("taxImpact")]
        public virtual Price TaxImpact { get; set; } 

        /// <summary>Describes whether the promotion applies to products (e.g. 20% off) or to shipping (e.g. Free
        /// Shipping).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("type")]
        public virtual string Type { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderRefund : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The actor that created the refund.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("actor")]
        public virtual string Actor { get; set; } 

        /// <summary>The amount that is refunded.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("amount")]
        public virtual Price Amount { get; set; } 

        /// <summary>Date on which the item has been created, in ISO 8601 format.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("creationDate")]
        public virtual string CreationDate { get; set; } 

        /// <summary>The reason for the refund.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reason")]
        public virtual string Reason { get; set; } 

        /// <summary>The explanation of the reason.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reasonText")]
        public virtual string ReasonText { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderReturn : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The actor that created the refund.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("actor")]
        public virtual string Actor { get; set; } 

        /// <summary>Date on which the item has been created, in ISO 8601 format.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("creationDate")]
        public virtual string CreationDate { get; set; } 

        /// <summary>Quantity that is returned.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantity")]
        public virtual System.Nullable<long> Quantity { get; set; } 

        /// <summary>The reason for the return.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reason")]
        public virtual string Reason { get; set; } 

        /// <summary>The explanation of the reason.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reasonText")]
        public virtual string ReasonText { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderShipment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The carrier handling the shipment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrier")]
        public virtual string Carrier { get; set; } 

        /// <summary>Date on which the shipment has been created, in ISO 8601 format.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("creationDate")]
        public virtual string CreationDate { get; set; } 

        /// <summary>Date on which the shipment has been delivered, in ISO 8601 format. Present only if status is
        /// delievered</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deliveryDate")]
        public virtual string DeliveryDate { get; set; } 

        /// <summary>The id of the shipment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>The line items that are shipped.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lineItems")]
        public virtual System.Collections.Generic.IList<OrderShipmentLineItemShipment> LineItems { get; set; } 

        /// <summary>The status of the shipment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("status")]
        public virtual string Status { get; set; } 

        /// <summary>The tracking id for the shipment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("trackingId")]
        public virtual string TrackingId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrderShipmentLineItemShipment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The id of the line item that is shipped.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lineItemId")]
        public virtual string LineItemId { get; set; } 

        /// <summary>The quantity that is shipped.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantity")]
        public virtual System.Nullable<long> Quantity { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersAcknowledgeRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the operation. Unique across all operations for a given order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operationId")]
        public virtual string OperationId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersAcknowledgeResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The status of the execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executionStatus")]
        public virtual string ExecutionStatus { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersAcknowledgeResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersAdvanceTestOrderResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersAdvanceTestOrderResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCancelLineItemRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Amount to refund for the cancelation. Optional. If not set, Google will calculate the default based
        /// on the price and tax of the items involved. The amount must not be larger than the net amount left on the
        /// order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("amount")]
        public virtual Price Amount { get; set; } 

        /// <summary>The ID of the line item to cancel.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lineItemId")]
        public virtual string LineItemId { get; set; } 

        /// <summary>The ID of the operation. Unique across all operations for a given order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operationId")]
        public virtual string OperationId { get; set; } 

        /// <summary>The quantity to cancel.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantity")]
        public virtual System.Nullable<long> Quantity { get; set; } 

        /// <summary>The reason for the cancellation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reason")]
        public virtual string Reason { get; set; } 

        /// <summary>The explanation of the reason.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reasonText")]
        public virtual string ReasonText { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCancelLineItemResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The status of the execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executionStatus")]
        public virtual string ExecutionStatus { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersCancelLineItemResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCancelRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the operation. Unique across all operations for a given order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operationId")]
        public virtual string OperationId { get; set; } 

        /// <summary>The reason for the cancellation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reason")]
        public virtual string Reason { get; set; } 

        /// <summary>The explanation of the reason.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reasonText")]
        public virtual string ReasonText { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCancelResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The status of the execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executionStatus")]
        public virtual string ExecutionStatus { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersCancelResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCreateTestOrderRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The test order template to use. Specify as an alternative to testOrder as a shortcut for retrieving
        /// a template and then creating an order using that template.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("templateName")]
        public virtual string TemplateName { get; set; } 

        /// <summary>The test order to create.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("testOrder")]
        public virtual TestOrder TestOrder { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCreateTestOrderResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersCreateTestOrderResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ID of the newly created test order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("orderId")]
        public virtual string OrderId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCustomBatchRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The request entries to be processed in the batch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<OrdersCustomBatchRequestEntry> Entries { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCustomBatchRequestEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>An entry ID, unique within the batch request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>Required for cancel method.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("cancel")]
        public virtual OrdersCustomBatchRequestEntryCancel Cancel { get; set; } 

        /// <summary>Required for cancelLineItem method.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("cancelLineItem")]
        public virtual OrdersCustomBatchRequestEntryCancelLineItem CancelLineItem { get; set; } 

        /// <summary>The ID of the managing account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantId")]
        public virtual System.Nullable<ulong> MerchantId { get; set; } 

        /// <summary>The merchant order id. Required for updateMerchantOrderId and getByMerchantOrderId
        /// methods.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantOrderId")]
        public virtual string MerchantOrderId { get; set; } 

        /// <summary>The method to apply.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>The ID of the operation. Unique across all operations for a given order. Required for all methods
        /// beside get and getByMerchantOrderId.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operationId")]
        public virtual string OperationId { get; set; } 

        /// <summary>The ID of the order. Required for all methods beside getByMerchantOrderId.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("orderId")]
        public virtual string OrderId { get; set; } 

        /// <summary>Required for refund method.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("refund")]
        public virtual OrdersCustomBatchRequestEntryRefund Refund { get; set; } 

        /// <summary>Required for returnLineItem method.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("returnLineItem")]
        public virtual OrdersCustomBatchRequestEntryReturnLineItem ReturnLineItem { get; set; } 

        /// <summary>Required for shipLineItems method.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shipLineItems")]
        public virtual OrdersCustomBatchRequestEntryShipLineItems ShipLineItems { get; set; } 

        /// <summary>Required for updateShipment method.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("updateShipment")]
        public virtual OrdersCustomBatchRequestEntryUpdateShipment UpdateShipment { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCustomBatchRequestEntryCancel : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The reason for the cancellation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reason")]
        public virtual string Reason { get; set; } 

        /// <summary>The explanation of the reason.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reasonText")]
        public virtual string ReasonText { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCustomBatchRequestEntryCancelLineItem : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Amount to refund for the cancelation. Optional. If not set, Google will calculate the default based
        /// on the price and tax of the items involved. The amount must not be larger than the net amount left on the
        /// order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("amount")]
        public virtual Price Amount { get; set; } 

        /// <summary>The ID of the line item to cancel.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lineItemId")]
        public virtual string LineItemId { get; set; } 

        /// <summary>The quantity to cancel.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantity")]
        public virtual System.Nullable<long> Quantity { get; set; } 

        /// <summary>The reason for the cancellation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reason")]
        public virtual string Reason { get; set; } 

        /// <summary>The explanation of the reason.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reasonText")]
        public virtual string ReasonText { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCustomBatchRequestEntryRefund : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The amount that is refunded.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("amount")]
        public virtual Price Amount { get; set; } 

        /// <summary>The reason for the refund.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reason")]
        public virtual string Reason { get; set; } 

        /// <summary>The explanation of the reason.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reasonText")]
        public virtual string ReasonText { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCustomBatchRequestEntryReturnLineItem : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the line item to return.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lineItemId")]
        public virtual string LineItemId { get; set; } 

        /// <summary>The quantity to return.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantity")]
        public virtual System.Nullable<long> Quantity { get; set; } 

        /// <summary>The reason for the return.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reason")]
        public virtual string Reason { get; set; } 

        /// <summary>The explanation of the reason.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reasonText")]
        public virtual string ReasonText { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCustomBatchRequestEntryShipLineItems : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The carrier handling the shipment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrier")]
        public virtual string Carrier { get; set; } 

        /// <summary>Line items to ship.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lineItems")]
        public virtual System.Collections.Generic.IList<OrderShipmentLineItemShipment> LineItems { get; set; } 

        /// <summary>The ID of the shipment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shipmentId")]
        public virtual string ShipmentId { get; set; } 

        /// <summary>The tracking id for the shipment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("trackingId")]
        public virtual string TrackingId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCustomBatchRequestEntryUpdateShipment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The carrier handling the shipment. Not updated if missing.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrier")]
        public virtual string Carrier { get; set; } 

        /// <summary>The ID of the shipment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shipmentId")]
        public virtual string ShipmentId { get; set; } 

        /// <summary>New status for the shipment. Not updated if missing.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("status")]
        public virtual string Status { get; set; } 

        /// <summary>The tracking id for the shipment. Not updated if missing.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("trackingId")]
        public virtual string TrackingId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCustomBatchResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The result of the execution of the batch requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<OrdersCustomBatchResponseEntry> Entries { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersCustomBatchResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersCustomBatchResponseEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the request entry this entry responds to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>A list of errors defined if and only if the request failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual Errors Errors { get; set; } 

        /// <summary>The status of the execution. Only defined if the method is not get or getByMerchantOrderId and if
        /// the request was successful.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executionStatus")]
        public virtual string ExecutionStatus { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersCustomBatchResponseEntry".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The retrieved order. Only defined if the method is get and if the request was successful.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("order")]
        public virtual Order Order { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersGetByMerchantOrderIdResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersGetByMerchantOrderIdResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The requested order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("order")]
        public virtual Order Order { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersGetTestOrderTemplateResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersGetTestOrderTemplateResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The requested test order template.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("template")]
        public virtual TestOrder Template { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The token for the retrieval of the next page of orders.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<Order> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersRefundRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The amount that is refunded.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("amount")]
        public virtual Price Amount { get; set; } 

        /// <summary>The ID of the operation. Unique across all operations for a given order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operationId")]
        public virtual string OperationId { get; set; } 

        /// <summary>The reason for the refund.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reason")]
        public virtual string Reason { get; set; } 

        /// <summary>The explanation of the reason.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reasonText")]
        public virtual string ReasonText { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersRefundResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The status of the execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executionStatus")]
        public virtual string ExecutionStatus { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersRefundResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersReturnLineItemRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the line item to return.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lineItemId")]
        public virtual string LineItemId { get; set; } 

        /// <summary>The ID of the operation. Unique across all operations for a given order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operationId")]
        public virtual string OperationId { get; set; } 

        /// <summary>The quantity to return.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantity")]
        public virtual System.Nullable<long> Quantity { get; set; } 

        /// <summary>The reason for the return.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reason")]
        public virtual string Reason { get; set; } 

        /// <summary>The explanation of the reason.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reasonText")]
        public virtual string ReasonText { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersReturnLineItemResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The status of the execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executionStatus")]
        public virtual string ExecutionStatus { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersReturnLineItemResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersShipLineItemsRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The carrier handling the shipment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrier")]
        public virtual string Carrier { get; set; } 

        /// <summary>Line items to ship.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lineItems")]
        public virtual System.Collections.Generic.IList<OrderShipmentLineItemShipment> LineItems { get; set; } 

        /// <summary>The ID of the operation. Unique across all operations for a given order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operationId")]
        public virtual string OperationId { get; set; } 

        /// <summary>The ID of the shipment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shipmentId")]
        public virtual string ShipmentId { get; set; } 

        /// <summary>The tracking id for the shipment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("trackingId")]
        public virtual string TrackingId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersShipLineItemsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The status of the execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executionStatus")]
        public virtual string ExecutionStatus { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersShipLineItemsResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersUpdateMerchantOrderIdRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The merchant order id to be assigned to the order. Must be unique per merchant.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantOrderId")]
        public virtual string MerchantOrderId { get; set; } 

        /// <summary>The ID of the operation. Unique across all operations for a given order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operationId")]
        public virtual string OperationId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersUpdateMerchantOrderIdResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The status of the execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executionStatus")]
        public virtual string ExecutionStatus { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersUpdateMerchantOrderIdResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersUpdateShipmentRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The carrier handling the shipment. Not updated if missing.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrier")]
        public virtual string Carrier { get; set; } 

        /// <summary>The ID of the operation. Unique across all operations for a given order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operationId")]
        public virtual string OperationId { get; set; } 

        /// <summary>The ID of the shipment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shipmentId")]
        public virtual string ShipmentId { get; set; } 

        /// <summary>New status for the shipment. Not updated if missing.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("status")]
        public virtual string Status { get; set; } 

        /// <summary>The tracking id for the shipment. Not updated if missing.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("trackingId")]
        public virtual string TrackingId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class OrdersUpdateShipmentResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The status of the execution.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("executionStatus")]
        public virtual string ExecutionStatus { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#ordersUpdateShipmentResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class PostalCodeGroup : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The CLDR territory code of the country the postal code group applies to. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("country")]
        public virtual string Country { get; set; } 

        /// <summary>The name of the postal code group, referred to in headers. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>A range of postal codes. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("postalCodeRanges")]
        public virtual System.Collections.Generic.IList<PostalCodeRange> PostalCodeRanges { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class PostalCodeRange : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A postal code or a pattern of the form prefix* denoting the inclusive lower bound of the range
        /// defining the area. Examples values: "94108", "9410*", "9*". Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("postalCodeRangeBegin")]
        public virtual string PostalCodeRangeBegin { get; set; } 

        /// <summary>A postal code or a pattern of the form prefix* denoting the inclusive upper bound of the range
        /// defining the area. It must have the same length as postalCodeRangeBegin: if postalCodeRangeBegin is a postal
        /// code then postalCodeRangeEnd must be a postal code too; if postalCodeRangeBegin is a pattern then
        /// postalCodeRangeEnd must be a pattern with the same prefix length. Optional: if not set, then the area is
        /// defined as being all the postal codes matching postalCodeRangeBegin.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("postalCodeRangeEnd")]
        public virtual string PostalCodeRangeEnd { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Price : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The currency of the price.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("currency")]
        public virtual string Currency { get; set; } 

        /// <summary>The price represented as a number.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual string Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Product data.</summary>
    public class Product : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Additional URLs of images of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("additionalImageLinks")]
        public virtual System.Collections.Generic.IList<string> AdditionalImageLinks { get; set; } 

        /// <summary>Additional categories of the item (formatted as in products feed specification).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("additionalProductTypes")]
        public virtual System.Collections.Generic.IList<string> AdditionalProductTypes { get; set; } 

        /// <summary>Set to true if the item is targeted towards adults.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("adult")]
        public virtual System.Nullable<bool> Adult { get; set; } 

        /// <summary>Used to group items in an arbitrary way. Only for CPA%, discouraged otherwise.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("adwordsGrouping")]
        public virtual string AdwordsGrouping { get; set; } 

        /// <summary>Similar to adwords_grouping, but only works on CPC.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("adwordsLabels")]
        public virtual System.Collections.Generic.IList<string> AdwordsLabels { get; set; } 

        /// <summary>Allows advertisers to override the item URL when the product is shown within the context of Product
        /// Ads.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("adwordsRedirect")]
        public virtual string AdwordsRedirect { get; set; } 

        /// <summary>Target age group of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("ageGroup")]
        public virtual string AgeGroup { get; set; } 

        /// <summary>Specifies the intended aspects for the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("aspects")]
        public virtual System.Collections.Generic.IList<ProductAspect> Aspects { get; set; } 

        /// <summary>Availability status of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("availability")]
        public virtual string Availability { get; set; } 

        /// <summary>The day a pre-ordered product becomes available for delivery, in ISO 8601 format.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("availabilityDate")]
        public virtual string AvailabilityDate { get; set; } 

        /// <summary>Brand of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("brand")]
        public virtual string Brand { get; set; } 

        /// <summary>The item's channel (online or local).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("channel")]
        public virtual string Channel { get; set; } 

        /// <summary>Color of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("color")]
        public virtual string Color { get; set; } 

        /// <summary>Condition or state of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("condition")]
        public virtual string Condition { get; set; } 

        /// <summary>The two-letter ISO 639-1 language code for the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("contentLanguage")]
        public virtual string ContentLanguage { get; set; } 

        /// <summary>A list of custom (merchant-provided) attributes. It can also be used for submitting any attribute
        /// of the feed specification in its generic form (e.g., { "name": "size type", "type": "text", "value":
        /// "regular" }). This is useful for submitting attributes not explicitly exposed by the API.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("customAttributes")]
        public virtual System.Collections.Generic.IList<ProductCustomAttribute> CustomAttributes { get; set; } 

        /// <summary>A list of custom (merchant-provided) custom attribute groups.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("customGroups")]
        public virtual System.Collections.Generic.IList<ProductCustomGroup> CustomGroups { get; set; } 

        /// <summary>Custom label 0 for custom grouping of items in a Shopping campaign.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("customLabel0")]
        public virtual string CustomLabel0 { get; set; } 

        /// <summary>Custom label 1 for custom grouping of items in a Shopping campaign.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("customLabel1")]
        public virtual string CustomLabel1 { get; set; } 

        /// <summary>Custom label 2 for custom grouping of items in a Shopping campaign.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("customLabel2")]
        public virtual string CustomLabel2 { get; set; } 

        /// <summary>Custom label 3 for custom grouping of items in a Shopping campaign.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("customLabel3")]
        public virtual string CustomLabel3 { get; set; } 

        /// <summary>Custom label 4 for custom grouping of items in a Shopping campaign.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("customLabel4")]
        public virtual string CustomLabel4 { get; set; } 

        /// <summary>Description of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; } 

        /// <summary>Specifies the intended destinations for the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("destinations")]
        public virtual System.Collections.Generic.IList<ProductDestination> Destinations { get; set; } 

        /// <summary>An identifier for an item for dynamic remarketing campaigns.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayAdsId")]
        public virtual string DisplayAdsId { get; set; } 

        /// <summary>URL directly to your item's landing page for dynamic remarketing campaigns.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayAdsLink")]
        public virtual string DisplayAdsLink { get; set; } 

        /// <summary>Advertiser-specified recommendations.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayAdsSimilarIds")]
        public virtual System.Collections.Generic.IList<string> DisplayAdsSimilarIds { get; set; } 

        /// <summary>Title of an item for dynamic remarketing campaigns.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayAdsTitle")]
        public virtual string DisplayAdsTitle { get; set; } 

        /// <summary>Offer margin for dynamic remarketing campaigns.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayAdsValue")]
        public virtual System.Nullable<double> DisplayAdsValue { get; set; } 

        /// <summary>The energy efficiency class as defined in EU directive 2010/30/EU.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("energyEfficiencyClass")]
        public virtual string EnergyEfficiencyClass { get; set; } 

        /// <summary>Date on which the item should expire, as specified upon insertion, in ISO 8601 format. The actual
        /// expiration date in Google Shopping is exposed in productstatuses as googleExpirationDate and might be
        /// earlier if expirationDate is too far in the future.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expirationDate")]
        public virtual string ExpirationDate { get; set; } 

        /// <summary>Target gender of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("gender")]
        public virtual string Gender { get; set; } 

        /// <summary>Google's category of the item (see Google product taxonomy).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("googleProductCategory")]
        public virtual string GoogleProductCategory { get; set; } 

        /// <summary>Global Trade Item Number (GTIN) of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("gtin")]
        public virtual string Gtin { get; set; } 

        /// <summary>The REST id of the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>False when the item does not have unique product identifiers appropriate to its category, such as
        /// GTIN, MPN, and brand. Required according to the Unique Product Identifier Rules for all target countries
        /// except for Canada.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("identifierExists")]
        public virtual System.Nullable<bool> IdentifierExists { get; set; } 

        /// <summary>URL of an image of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("imageLink")]
        public virtual string ImageLink { get; set; } 

        /// <summary>Number and amount of installments to pay for an item. Brazil only.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("installment")]
        public virtual Installment Installment { get; set; } 

        /// <summary>Whether the item is a merchant-defined bundle. A bundle is a custom grouping of different products
        /// sold by a merchant for a single price.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("isBundle")]
        public virtual System.Nullable<bool> IsBundle { get; set; } 

        /// <summary>Shared identifier for all variants of the same product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("itemGroupId")]
        public virtual string ItemGroupId { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string "content#product".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>URL directly linking to your item's page on your website.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("link")]
        public virtual string Link { get; set; } 

        /// <summary>Loyalty points that users receive after purchasing the item. Japan only.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("loyaltyPoints")]
        public virtual LoyaltyPoints LoyaltyPoints { get; set; } 

        /// <summary>The material of which the item is made.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("material")]
        public virtual string Material { get; set; } 

        /// <summary>Link to a mobile-optimized version of the landing page.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("mobileLink")]
        public virtual string MobileLink { get; set; } 

        /// <summary>Manufacturer Part Number (MPN) of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("mpn")]
        public virtual string Mpn { get; set; } 

        /// <summary>The number of identical products in a merchant-defined multipack.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("multipack")]
        public virtual System.Nullable<long> Multipack { get; set; } 

        /// <summary>An identifier of the item. Leading and trailing whitespaces are stripped and multiple whitespaces
        /// are replaced by a single whitespace upon submission. Only valid unicode characters are accepted. See the
        /// products feed specification for details.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("offerId")]
        public virtual string OfferId { get; set; } 

        /// <summary>Whether an item is available for purchase only online.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("onlineOnly")]
        public virtual System.Nullable<bool> OnlineOnly { get; set; } 

        /// <summary>The item's pattern (e.g. polka dots).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pattern")]
        public virtual string Pattern { get; set; } 

        /// <summary>Price of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("price")]
        public virtual Price Price { get; set; } 

        /// <summary>Your category of the item (formatted as in products feed specification).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("productType")]
        public virtual string ProductType { get; set; } 

        /// <summary>The unique ID of a promotion.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("promotionIds")]
        public virtual System.Collections.Generic.IList<string> PromotionIds { get; set; } 

        /// <summary>Advertised sale price of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("salePrice")]
        public virtual Price SalePrice { get; set; } 

        /// <summary>Date range during which the item is on sale (see products feed specification).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("salePriceEffectiveDate")]
        public virtual string SalePriceEffectiveDate { get; set; } 

        /// <summary>The quantity of the product that is reserved for sell-on-google ads.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sellOnGoogleQuantity")]
        public virtual System.Nullable<long> SellOnGoogleQuantity { get; set; } 

        /// <summary>Shipping rules.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shipping")]
        public virtual System.Collections.Generic.IList<ProductShipping> Shipping { get; set; } 

        /// <summary>Height of the item for shipping.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingHeight")]
        public virtual ProductShippingDimension ShippingHeight { get; set; } 

        /// <summary>The shipping label of the product, used to group product in account-level shipping rules.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingLabel")]
        public virtual string ShippingLabel { get; set; } 

        /// <summary>Length of the item for shipping.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingLength")]
        public virtual ProductShippingDimension ShippingLength { get; set; } 

        /// <summary>Weight of the item for shipping.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingWeight")]
        public virtual ProductShippingWeight ShippingWeight { get; set; } 

        /// <summary>Width of the item for shipping.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingWidth")]
        public virtual ProductShippingDimension ShippingWidth { get; set; } 

        /// <summary>System in which the size is specified. Recommended for apparel items.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sizeSystem")]
        public virtual string SizeSystem { get; set; } 

        /// <summary>The cut of the item. Recommended for apparel items.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sizeType")]
        public virtual string SizeType { get; set; } 

        /// <summary>Size of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sizes")]
        public virtual System.Collections.Generic.IList<string> Sizes { get; set; } 

        /// <summary>The CLDR territory code for the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetCountry")]
        public virtual string TargetCountry { get; set; } 

        /// <summary>Tax information.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("taxes")]
        public virtual System.Collections.Generic.IList<ProductTax> Taxes { get; set; } 

        /// <summary>Title of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("title")]
        public virtual string Title { get; set; } 

        /// <summary>The preference of the denominator of the unit price.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("unitPricingBaseMeasure")]
        public virtual ProductUnitPricingBaseMeasure UnitPricingBaseMeasure { get; set; } 

        /// <summary>The measure and dimension of an item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("unitPricingMeasure")]
        public virtual ProductUnitPricingMeasure UnitPricingMeasure { get; set; } 

        /// <summary>The read-only list of intended destinations which passed validation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("validatedDestinations")]
        public virtual System.Collections.Generic.IList<string> ValidatedDestinations { get; set; } 

        /// <summary>Read-only warnings.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("warnings")]
        public virtual System.Collections.Generic.IList<Error> Warnings { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductAspect : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The name of the aspect.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("aspectName")]
        public virtual string AspectName { get; set; } 

        /// <summary>The name of the destination. Leave out to apply to all destinations.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("destinationName")]
        public virtual string DestinationName { get; set; } 

        /// <summary>Whether the aspect is required, excluded or should be validated.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("intention")]
        public virtual string Intention { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductCustomAttribute : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The name of the attribute. Underscores will be replaced by spaces upon insertion.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The type of the attribute.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("type")]
        public virtual string Type { get; set; } 

        /// <summary>Free-form unit of the attribute. Unit can only be used for values of type INT or FLOAT.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("unit")]
        public virtual string Unit { get; set; } 

        /// <summary>The value of the attribute.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual string Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductCustomGroup : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The sub-attributes.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("attributes")]
        public virtual System.Collections.Generic.IList<ProductCustomAttribute> Attributes { get; set; } 

        /// <summary>The name of the group. Underscores will be replaced by spaces upon insertion.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductDestination : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The name of the destination.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("destinationName")]
        public virtual string DestinationName { get; set; } 

        /// <summary>Whether the destination is required, excluded or should be validated.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("intention")]
        public virtual string Intention { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductShipping : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The CLDR territory code of the country to which an item will ship.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("country")]
        public virtual string Country { get; set; } 

        /// <summary>The location where the shipping is applicable, represented by a location group name.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("locationGroupName")]
        public virtual string LocationGroupName { get; set; } 

        /// <summary>The numeric id of a location that the shipping rate applies to as defined in the AdWords
        /// API.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("locationId")]
        public virtual System.Nullable<long> LocationId { get; set; } 

        /// <summary>The postal code range that the shipping rate applies to, represented by a postal code, a postal
        /// code prefix followed by a * wildcard, a range between two postal codes or two postal code prefixes of equal
        /// length.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("postalCode")]
        public virtual string PostalCode { get; set; } 

        /// <summary>Fixed shipping price, represented as a number.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("price")]
        public virtual Price Price { get; set; } 

        /// <summary>The geographic region to which a shipping rate applies (e.g. zip code).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("region")]
        public virtual string Region { get; set; } 

        /// <summary>A free-form description of the service class or delivery speed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("service")]
        public virtual string Service { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductShippingDimension : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The unit of value.
        ///
        /// Acceptable values are: - "cm" - "in"</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("unit")]
        public virtual string Unit { get; set; } 

        /// <summary>The dimension of the product used to calculate the shipping cost of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual System.Nullable<double> Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductShippingWeight : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The unit of value.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("unit")]
        public virtual string Unit { get; set; } 

        /// <summary>The weight of the product used to calculate the shipping cost of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual System.Nullable<double> Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The status of a product, i.e., information about a product computed asynchronously by the data quality
    /// analysis.</summary>
    public class ProductStatus : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Date on which the item has been created, in ISO 8601 format.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("creationDate")]
        public virtual string CreationDate { get; set; } 

        /// <summary>A list of data quality issues associated with the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("dataQualityIssues")]
        public virtual System.Collections.Generic.IList<ProductStatusDataQualityIssue> DataQualityIssues { get; set; } 

        /// <summary>The intended destinations for the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("destinationStatuses")]
        public virtual System.Collections.Generic.IList<ProductStatusDestinationStatus> DestinationStatuses { get; set; } 

        /// <summary>Date on which the item expires in Google Shopping, in ISO 8601 format.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("googleExpirationDate")]
        public virtual string GoogleExpirationDate { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#productStatus".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>Date on which the item has been last updated, in ISO 8601 format.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastUpdateDate")]
        public virtual string LastUpdateDate { get; set; } 

        /// <summary>The link to the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("link")]
        public virtual string Link { get; set; } 

        /// <summary>The id of the product for which status is reported.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("productId")]
        public virtual string ProductId { get; set; } 

        /// <summary>The title of the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("title")]
        public virtual string Title { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductStatusDataQualityIssue : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A more detailed error string.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("detail")]
        public virtual string Detail { get; set; } 

        /// <summary>The fetch status for landing_page_errors.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fetchStatus")]
        public virtual string FetchStatus { get; set; } 

        /// <summary>The id of the data quality issue.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>The attribute name that is relevant for the issue.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("location")]
        public virtual string Location { get; set; } 

        /// <summary>The severity of the data quality issue.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("severity")]
        public virtual string Severity { get; set; } 

        /// <summary>The time stamp of the data quality issue.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("timestamp")]
        public virtual string Timestamp { get; set; } 

        /// <summary>The value of that attribute that was found on the landing page</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("valueOnLandingPage")]
        public virtual string ValueOnLandingPage { get; set; } 

        /// <summary>The value the attribute had at time of evaluation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("valueProvided")]
        public virtual string ValueProvided { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductStatusDestinationStatus : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The destination's approval status.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("approvalStatus")]
        public virtual string ApprovalStatus { get; set; } 

        /// <summary>The name of the destination</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("destination")]
        public virtual string Destination { get; set; } 

        /// <summary>Whether the destination is required, excluded, selected by default or should be
        /// validated.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("intention")]
        public virtual string Intention { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductTax : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The country within which the item is taxed, specified as a CLDR territory code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("country")]
        public virtual string Country { get; set; } 

        /// <summary>The numeric id of a location that the tax rate applies to as defined in the AdWords API.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("locationId")]
        public virtual System.Nullable<long> LocationId { get; set; } 

        /// <summary>The postal code range that the tax rate applies to, represented by a ZIP code, a ZIP code prefix
        /// using * wildcard, a range between two ZIP codes or two ZIP code prefixes of equal length. Examples: 94114,
        /// 94*, 94002-95460, 94*-95*.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("postalCode")]
        public virtual string PostalCode { get; set; } 

        /// <summary>The percentage of tax rate that applies to the item price.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("rate")]
        public virtual System.Nullable<double> Rate { get; set; } 

        /// <summary>The geographic region to which the tax rate applies.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("region")]
        public virtual string Region { get; set; } 

        /// <summary>Set to true if tax is charged on shipping.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("taxShip")]
        public virtual System.Nullable<bool> TaxShip { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductUnitPricingBaseMeasure : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The unit of the denominator.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("unit")]
        public virtual string Unit { get; set; } 

        /// <summary>The denominator of the unit price.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual System.Nullable<long> Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductUnitPricingMeasure : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The unit of the measure.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("unit")]
        public virtual string Unit { get; set; } 

        /// <summary>The measure of an item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual System.Nullable<double> Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductsCustomBatchRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The request entries to be processed in the batch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<ProductsCustomBatchRequestEntry> Entries { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch products request.</summary>
    public class ProductsCustomBatchRequestEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>An entry ID, unique within the batch request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>The ID of the managing account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantId")]
        public virtual System.Nullable<ulong> MerchantId { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>The product to insert. Only required if the method is insert.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("product")]
        public virtual Product Product { get; set; } 

        /// <summary>The ID of the product to get or delete. Only defined if the method is get or delete.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("productId")]
        public virtual string ProductId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductsCustomBatchResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The result of the execution of the batch requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<ProductsCustomBatchResponseEntry> Entries { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#productsCustomBatchResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch products response.</summary>
    public class ProductsCustomBatchResponseEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the request entry this entry responds to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>A list of errors defined if and only if the request failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual Errors Errors { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#productsCustomBatchResponseEntry".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The inserted product. Only defined if the method is insert and if the request was
        /// successful.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("product")]
        public virtual Product Product { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductsListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#productsListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The token for the retrieval of the next page of products.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<Product> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductstatusesCustomBatchRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The request entries to be processed in the batch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<ProductstatusesCustomBatchRequestEntry> Entries { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch productstatuses request.</summary>
    public class ProductstatusesCustomBatchRequestEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>An entry ID, unique within the batch request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>The ID of the managing account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantId")]
        public virtual System.Nullable<ulong> MerchantId { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>The ID of the product whose status to get.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("productId")]
        public virtual string ProductId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductstatusesCustomBatchResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The result of the execution of the batch requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<ProductstatusesCustomBatchResponseEntry> Entries { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#productstatusesCustomBatchResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch productstatuses response.</summary>
    public class ProductstatusesCustomBatchResponseEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the request entry this entry responds to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>A list of errors, if the request failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual Errors Errors { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#productstatusesCustomBatchResponseEntry".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The requested product status. Only defined if the request was successful.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("productStatus")]
        public virtual ProductStatus ProductStatus { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ProductstatusesListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#productstatusesListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The token for the retrieval of the next page of products statuses.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<ProductStatus> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class RateGroup : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A list of shipping labels defining the products to which this rate group applies to. This is a
        /// disjunction: only one of the labels has to match for the rate group to apply. May only be empty for the last
        /// rate group of a service. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("applicableShippingLabels")]
        public virtual System.Collections.Generic.IList<string> ApplicableShippingLabels { get; set; } 

        /// <summary>A list of carrier rates that can be referred to by mainTable or singleValue.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrierRates")]
        public virtual System.Collections.Generic.IList<CarrierRate> CarrierRates { get; set; } 

        /// <summary>A table defining the rate group, when singleValue is not expressive enough. Can only be set if
        /// singleValue is not set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("mainTable")]
        public virtual Table MainTable { get; set; } 

        /// <summary>The value of the rate group (e.g. flat rate $10). Can only be set if mainTable and subtables are
        /// not set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("singleValue")]
        public virtual Value SingleValue { get; set; } 

        /// <summary>A list of subtables referred to by mainTable. Can only be set if mainTable is set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("subtables")]
        public virtual System.Collections.Generic.IList<Table> Subtables { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Row : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The list of cells that constitute the row. Must have the same length as columnHeaders for two-
        /// dimensional tables, a length of 1 for one-dimensional tables. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("cells")]
        public virtual System.Collections.Generic.IList<Value> Cells { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Service : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A boolean exposing the active status of the shipping service. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("active")]
        public virtual System.Nullable<bool> Active { get; set; } 

        /// <summary>The CLDR code of the currency to which this service applies. Must match that of the prices in rate
        /// groups.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("currency")]
        public virtual string Currency { get; set; } 

        /// <summary>The CLDR territory code of the country to which the service applies. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deliveryCountry")]
        public virtual string DeliveryCountry { get; set; } 

        /// <summary>Time spent in various aspects from order to the delivery of the product. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deliveryTime")]
        public virtual DeliveryTime DeliveryTime { get; set; } 

        /// <summary>Free-form name of the service. Must be unique within target account. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Shipping rate group definitions. Only the last one is allowed to have an empty
        /// applicableShippingLabels, which means "everything else". The other applicableShippingLabels must not
        /// overlap.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("rateGroups")]
        public virtual System.Collections.Generic.IList<RateGroup> RateGroups { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The merchant account's shipping settings.</summary>
    public class ShippingSettings : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the account to which these account shipping settings belong. Ignored upon update, always
        /// present in get request responses.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountId")]
        public virtual System.Nullable<ulong> AccountId { get; set; } 

        /// <summary>A list of postal code groups that can be referred to in services. Optional.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("postalCodeGroups")]
        public virtual System.Collections.Generic.IList<PostalCodeGroup> PostalCodeGroups { get; set; } 

        /// <summary>The target account's list of services. Optional.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("services")]
        public virtual System.Collections.Generic.IList<Service> Services { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ShippingsettingsCustomBatchRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The request entries to be processed in the batch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<ShippingsettingsCustomBatchRequestEntry> Entries { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch accountshipping request.</summary>
    public class ShippingsettingsCustomBatchRequestEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the account for which to get/update account shipping settings.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("accountId")]
        public virtual System.Nullable<ulong> AccountId { get; set; } 

        /// <summary>An entry ID, unique within the batch request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>The ID of the managing account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("merchantId")]
        public virtual System.Nullable<ulong> MerchantId { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>The account shipping settings to update. Only defined if the method is update.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingSettings")]
        public virtual ShippingSettings ShippingSettings { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ShippingsettingsCustomBatchResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The result of the execution of the batch requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("entries")]
        public virtual System.Collections.Generic.IList<ShippingsettingsCustomBatchResponseEntry> Entries { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#shippingsettingsCustomBatchResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A batch entry encoding a single non-batch shipping settings response.</summary>
    public class ShippingsettingsCustomBatchResponseEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ID of the request entry to which this entry responds.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        /// <summary>A list of errors defined if, and only if, the request failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual Errors Errors { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#shippingsettingsCustomBatchResponseEntry".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The retrieved or updated account shipping settings.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingSettings")]
        public virtual ShippingSettings ShippingSettings { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ShippingsettingsGetSupportedCarriersResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A list of supported carriers. May be empty.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carriers")]
        public virtual System.Collections.Generic.IList<CarriersCarrier> Carriers { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#shippingsettingsGetSupportedCarriersResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ShippingsettingsListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "content#shippingsettingsListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The token for the retrieval of the next page of shipping settings.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<ShippingSettings> Resources { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Table : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Headers of the table's columns. Optional: if not set then the table has only one
        /// dimension.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("columnHeaders")]
        public virtual Headers ColumnHeaders { get; set; } 

        /// <summary>Name of the table. Required for subtables, ignored for the main table.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Headers of the table's rows. Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("rowHeaders")]
        public virtual Headers RowHeaders { get; set; } 

        /// <summary>The list of rows that constitute the table. Must have the same length as rowHeaders.
        /// Required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("rows")]
        public virtual System.Collections.Generic.IList<Row> Rows { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class TestOrder : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The details of the customer who placed the order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("customer")]
        public virtual TestOrderCustomer Customer { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string "content#testOrder".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>Line items that are ordered. At least one line item must be provided.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lineItems")]
        public virtual System.Collections.Generic.IList<TestOrderLineItem> LineItems { get; set; } 

        /// <summary>The details of the payment method.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("paymentMethod")]
        public virtual TestOrderPaymentMethod PaymentMethod { get; set; } 

        /// <summary>Identifier of one of the predefined delivery addresses for the delivery.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("predefinedDeliveryAddress")]
        public virtual string PredefinedDeliveryAddress { get; set; } 

        /// <summary>The details of the merchant provided promotions applied to the order. More details about the
        /// program are  here.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("promotions")]
        public virtual System.Collections.Generic.IList<OrderPromotion> Promotions { get; set; } 

        /// <summary>The total cost of shipping for all items.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingCost")]
        public virtual Price ShippingCost { get; set; } 

        /// <summary>The tax for the total shipping cost.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingCostTax")]
        public virtual Price ShippingCostTax { get; set; } 

        /// <summary>The requested shipping option.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingOption")]
        public virtual string ShippingOption { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class TestOrderCustomer : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Email address of the customer.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("email")]
        public virtual string Email { get; set; } 

        /// <summary>If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to
        /// the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was
        /// thus not shown the marketing right opt in/out checkbox during the checkout flow. Optional.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("explicitMarketingPreference")]
        public virtual System.Nullable<bool> ExplicitMarketingPreference { get; set; } 

        /// <summary>Full name of the customer.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fullName")]
        public virtual string FullName { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class TestOrderLineItem : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Product data from the time of the order placement.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("product")]
        public virtual TestOrderLineItemProduct Product { get; set; } 

        /// <summary>Number of items ordered.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("quantityOrdered")]
        public virtual System.Nullable<long> QuantityOrdered { get; set; } 

        /// <summary>Details of the return policy for the line item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("returnInfo")]
        public virtual OrderLineItemReturnInfo ReturnInfo { get; set; } 

        /// <summary>Details of the requested shipping for the line item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shippingDetails")]
        public virtual OrderLineItemShippingDetails ShippingDetails { get; set; } 

        /// <summary>Unit tax for the line item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("unitTax")]
        public virtual Price UnitTax { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class TestOrderLineItemProduct : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Brand of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("brand")]
        public virtual string Brand { get; set; } 

        /// <summary>The item's channel.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("channel")]
        public virtual string Channel { get; set; } 

        /// <summary>Condition or state of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("condition")]
        public virtual string Condition { get; set; } 

        /// <summary>The two-letter ISO 639-1 language code for the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("contentLanguage")]
        public virtual string ContentLanguage { get; set; } 

        /// <summary>Global Trade Item Number (GTIN) of the item. Optional.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("gtin")]
        public virtual string Gtin { get; set; } 

        /// <summary>URL of an image of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("imageLink")]
        public virtual string ImageLink { get; set; } 

        /// <summary>Shared identifier for all variants of the same product. Optional.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("itemGroupId")]
        public virtual string ItemGroupId { get; set; } 

        /// <summary>Manufacturer Part Number (MPN) of the item. Optional.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("mpn")]
        public virtual string Mpn { get; set; } 

        /// <summary>An identifier of the item.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("offerId")]
        public virtual string OfferId { get; set; } 

        /// <summary>The price for the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("price")]
        public virtual Price Price { get; set; } 

        /// <summary>The CLDR territory code of the target country of the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetCountry")]
        public virtual string TargetCountry { get; set; } 

        /// <summary>The title of the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("title")]
        public virtual string Title { get; set; } 

        /// <summary>Variant attributes for the item. Optional.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("variantAttributes")]
        public virtual System.Collections.Generic.IList<OrderLineItemProductVariantAttribute> VariantAttributes { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class TestOrderPaymentMethod : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The card expiration month (January = 1, February = 2 etc.).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expirationMonth")]
        public virtual System.Nullable<int> ExpirationMonth { get; set; } 

        /// <summary>The card expiration year (4-digit, e.g. 2015).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expirationYear")]
        public virtual System.Nullable<int> ExpirationYear { get; set; } 

        /// <summary>The last four digits of the card number.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastFourDigits")]
        public virtual string LastFourDigits { get; set; } 

        /// <summary>The billing address.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("predefinedBillingAddress")]
        public virtual string PredefinedBillingAddress { get; set; } 

        /// <summary>The type of instrument. Note that real orders might have different values than the four values
        /// accepted by createTestOrder.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("type")]
        public virtual string Type { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The single value of a rate group or the value of a rate group table's cell. Exactly one of noShipping,
    /// flatRate, pricePercentage, carrierRateName, subtableName must be set.</summary>
    public class Value : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The name of a carrier rate referring to a carrier rate defined in the same rate group. Can only be
        /// set if all other fields are not set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("carrierRateName")]
        public virtual string CarrierRateName { get; set; } 

        /// <summary>A flat rate. Can only be set if all other fields are not set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("flatRate")]
        public virtual Price FlatRate { get; set; } 

        /// <summary>If true, then the product can't ship. Must be true when set, can only be set if all other fields
        /// are not set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("noShipping")]
        public virtual System.Nullable<bool> NoShipping { get; set; } 

        /// <summary>A percentage of the price represented as a number in decimal notation (e.g., "5.4"). Can only be
        /// set if all other fields are not set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("pricePercentage")]
        public virtual string PricePercentage { get; set; } 

        /// <summary>The name of a subtable. Can only be set in table cells (i.e., not for single values), and only if
        /// all other fields are not set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("subtableName")]
        public virtual string SubtableName { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Weight : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The weight unit.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("unit")]
        public virtual string Unit { get; set; } 

        /// <summary>The weight represented as a number.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual string Value { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }
}
